У нас была такая ситуация и мы задавались вопросом о том, как это исправить.
template<typename T>
struct A : T {
A(T &&t) noexcept(noexcept(T(std::move(t))))
:T(std::move(t))
{ }
};
Это, к сожалению, не удается скомпилировать, поскольку конструктор перемещения T защищен, и нам разрешено вызывать его только в списке инициализации конструктора для *this
. Каковы обходные пути для выполнения этой работы или есть даже стандартный способ для этого?