我有以下代码:构造函数nulltpr_t:函数定义不声明参数
class C {
private:
void *data;
public:
constexpr C(nullptr_t) : data(nullptr) { }
C(int i) : data(new int(i)) { }
};
我已经创建了一个构造函数,需要nullptr_t
,这样我可以有类似于下面的代码:
C foo(2);
// ...
foo = nullptr;
与此类似的代码以前在MSVC上工作过,但是此代码无法在GCC 5.3.1(使用-std=c++14
)上编译,而在C(nullptr_t)
的右括号与error: function definition does not declare parameters
之间编译。即使我给参数一个名字(在这种情况下,_
),我得到error: expected ')' before '_'
。如果constexpr
关键字被删除,这也会失败。
为什么我无法声明这样的构造函数,以及有什么可能的解决方法?
您应该'的#include'至少。 (并添加'std ::'。) –
songyuanyao
@songyuanyao谢谢你,修正了它。 –