Сочетание двух конструкторов, которые копируют и перемещают

В настоящее время один из моих шаблонов классов игрушек имеет два конструктора, которые выглядят очень похожи:

optional(const T& x)
{
    construct(x);
}

optional(T&& x)
{
    construct(std::move(x));
}

Могу ли я объединить их в единый шаблон конструктора, или это как-то меняет семантику?

template<typename U>
optional(U&& x)
{
    construct(std::forward<U>(x));
}
7
задан fredoverflow 12 September 2011 в 13:21
поделиться