0
struct Foo {
    int data;
    Foo() = default;
    Foo(const Foo& arg) = default;
};

但是我的编译器还没有默认的构造函数

我可以定义一个宏DEFAULTED来代替= default吗?如果它刚刚离开该行

    Foo(const Foo& arg);

编译器仍会生成其默认值,还是会抱怨?

4

1 回答 1

2

当然可以:

#if __cplusplus == 201103L
# define DEFAULTED(func) func = default;
#else
# define DEFAULTED(func)
#endif

struct foo
{
    DEFAULTED(foo())
};

但是:某些编译器支持 C++11 的部分内容,即使它们不支持默认构造函数,也可能设置__cplusplus为。201103L

于 2012-06-19T10:01:50.057 回答