以下のプログラムは (gcc で) コンパイルされますが、そうすべきでしょうか? 以下で作成された V1(1.0) は定数なので、const 以外のメソッドを呼び出すことができないと思っていました。
class V{
double v;
public:
V(double v1){ v = v1;}
void clear(){ v = 0;}
};
int main(){
V(1.0).clear();
}
これを、「f(1)」として呼び出すことができない関数「void f(int &t){}」と比較してください。これは、1 が非 const 参照 t の値になることができない定数であるためです。