良い習慣ではないと思いますが、私が使用しているコンパイラ (GNU と clang の両方) では、次のようなものが許可されているようです。
int f() {return 11;}
class A {
int a = f();
public:
int tell_me() {return a;}
};
つまり、完全に関係のない関数を呼び出すことによってブレースまたはイコールの初期化が行われる場合です。
これは正しく、標準で許可されていますか? の実行によって最終的にもたらされる付随効果についてはどうf()
ですか?