Здесь класс с конструктором variadic и его специализациями для копирования и перемещения из временного.
template<class Obj>
class wrapper {
protected:
Obj _Data;
public:
wrapper(const wrapper<Obj>& w): _Data(w._Data) {}
wrapper(wrapper<Obj>&& w):
_Data(std::forward<Obj>(w._Data)) {}
template<class ...Args>
wrapper(Args&&... args):
_Data(std::forward<Args>(args)...) {}
inline Obj& operator()() { return _Data; }
virtual ~wrapper() {}
};
Когда я использую одну из таких специализаций, как эта
wrapper<int> w1(9);
wrapper<int> w2(w1);
Я получаю сообщение об ошибке: тип w1
выводится как int
.
Выход из VS2012:
error C2440: 'initializing' : cannot convert from 'win::util::wrapper<int>' to 'int'
Как решить эту проблему?