クラス外の定数変数は、コンパイラによる関数呼び出しに直接最適化できることは知っていますが、コンパイラが定数クラス変数に対して同じことを行うことは合法ですか?
次のように宣言されたクラスがある場合:
class A {
public:
const int constVar;
//other, modifiable variables
A(int val): constVar(val) {
//code to initialize modifiable variables
}
};
A のインスタンスを作成し、次のような関数を呼び出します。
A obj(-2);
int absoluteVal = std::abs(A.constVar);
代わりにこれを行い、クラスをsizeof(int)
小さくすることはコンパイラーに許可されていますか?:
A obj();
int absoluteVal = std::abs(-2);