struct Foo {
int data;
Foo() = default;
Foo(const Foo& arg) = default;
};
但是我的编译器doesn't have defaulted constructors yet。
我可以定义像DEFAULTED
这样的宏代表= default
吗?如果它只是将该行留作
Foo(const Foo& arg);
编译器是否仍会生成其默认值,还是会抱怨?
答案 0 :(得分:2)
当然你可以:
#if __cplusplus == 201103L
# define DEFAULTED(func) func = default;
#else
# define DEFAULTED(func)
#endif
struct foo
{
DEFAULTED(foo())
};
但是:有些编译器支持C ++ 11的部分内容,并且可能会将__cplusplus
设置为201103L
,即使它们不支持默认构造函数。