Я читал о инкапсулированном полиморфизме, и я наткнулся на кусок кода, как этот:станда :: вперед с передачей по значению аргумента
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;
};
Какой смысл экспедиторских осущий в модели конструктора?
Имеет ли смысл направить аргумент, если он передан по значению?
Аргумент шаблона может быть ссылочным типом. Имея это в виду, это 'std :: forward' имеет для меня некоторый смысл. – cpplearner