参加以下课程:
template <typename TPayload>
class Message
{
public:
Message(const TPayload& payload)
: m_header(sizeof(TPayload)),
m_payload(payload) {}
private:
const Header m_header;
const TPayload m_payload;
};
每当我构造一条消息时,我都必须创建一个 TPayload(参数有效负载),将其复制到 m_payload 中,然后销毁有效负载。现在考虑这可以每秒完成 100'000 次,我认为这是一种浪费的努力。
我的问题是,我可以强制 m_payload 的就地构造来避免临时有效负载吗?
我正在考虑的一种可能的解决方案是多次重载结构,如下所示,但老实说,我怀疑是否有很多节省。
template <typename TPayload>
class Message
{
public:
template <typename A>
Message(const A& a)
: m_header(sizeof(TPayload)),
m_payload(a) {}
template <typename A, typename B>
Message(const A& a, const B& b)
: m_header(sizeof(TPayload)),
m_payload(a, b) {}
private:
const Header m_header;
const TPayload m_payload;
};