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 に答える