Hi,
Code:
struct base {
virtual ~base()=default;
};
template<typename... Types>
class collection {
std::vector<std::unique_ptr<base>> m_values{std::unique_ptr<base>{new Types}...};
};
struct test: base {
};
int main()
{
collection<test> c;
}
GCC gives me
Code:
/usr/include/c++/5.1.0/bits/stl_construct.h:75:7: error: use of deleted function ‘std::unique_ptr<_Tp, _Dp>::unique_ptr(const std::unique_ptr<_Tp, _Dp>&) [with _Tp = base; _Dp = std::default_delete<base>]’
{ ::new(static_cast<void*>(__p)) _T1(std::forward<_Args>(__args)...); }
I know that `std::unique_ptr' is movable only, but I can't figure out why this program is trying to copy construct one?