【发布时间】:2015-07-20 10:11:54
【问题描述】:
我在阅读有关封装多态性的内容时遇到了这样一段代码:
template <typename T>
struct Model<T> : Concept
{
Model<T>(T impl) :
mImpl(std::forward<T>(impl))
{
}
virtual Concept* clone() const override
{
return new Model<T>(mImpl)
}
virtual void operator (const LogMessage::Meta& meta, const std::string& message) override
{
mImpl(meta, message);
}
T mImpl;
};
Model构造函数中转发impl有什么意义?
如果按值传递参数,转发是否有意义?
【问题讨论】:
-
模板参数可以是引用类型。考虑到这一点,
std::forward对我来说是有意义的。
标签: c++ c++11 pass-by-value perfect-forwarding