Здесь класс с конструктором 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'
Как решить эту проблему?