Хотя я думаю, что это не будет хорошей практикой, используемые мной компиляторы (как GNU, так и clang) допускают что-то вроде следующего
int f() {return 11;}
class A {
int a = f();
public:
int tell_me() {return a;}
};
то есть где инициализация в скобках или равная выполняется путем вызова совершенно посторонней функции.
Это правильно и разрешено стандартом?
Как насчет побочных эффектов, в конечном итоге введенных в результате выполнения f()
?
Это правильно и разрешено стандартом?
Да.
Как насчет побочных эффектов, которые в конечном итоге привносятся выполнением f ()?
Побочные эффекты случаются, когда функция выполняется, что происходит, когда A
построен Точно так же, как если бы использовался список инициализации.