我有一个类模板,它使用类内成员初始值设定项将unique_ptr指定给nullptr。如果我使用MyClass(){}
,一切都很好。如果我使用MyClass() = default
,我得到:具有显式定义的默认构造函数的unique_ptr到nullptr错误的类内成员初始值设定项
conversion from 'std::nullptr_t' to non-scalar type 'std::unique_ptr<A>' requested
下面是一个小例子,其失败的g ++ 4.8.4编译:
#include <memory>
class A{};
template <typename T>
class Test
{
std::unique_ptr<A> data = nullptr;
public:
//Test() {} // works fine
Test() = default; // compiler error
};
int main()
{
Test<float> test;
}
任何想法?
那么,我们不会最小化你的未知(对我们)代码。 – SergeyA
@SergeyA这是一个非常有用的评论。做得好。 – Anthony
您的代码在gcc上编译得很好:[在线试用](http://ideone.com/fD6Hyr) – Anedar