考虑这个类:
#include <iostream>
struct foo {
int a = 42;
int b = bar();
int bar() { return a; }
};
int main(){
foo f;
std::cout << f.a << " " << f.b;
}
它打印预期的42 42
. 标准是否允许在默认成员初始化程序中调用成员函数?
以下我希望是未定义的:
struct broken {
int a = bar();
int b = 42;
int bar() { return b; }
};
不幸的是,它编译时没有警告。