エラー!
$ cat double.cc
#include<iostream>
int main() {
int i = 42;
double &r = i;
}
$ g++ double.cc
double.cc: In function ‘int main()’:
double.cc:5: error: invalid initialization of reference of type ‘double&’
from expression of type ‘int’
$
動作します!
$ cat double.cc
#include<iostream>
int main() {
int i = 42;
const double &r = i;
}
$ g++ double.cc
$
最初のケースでエラーが発生するのはなぜですか? これがここで議論されていることは知っていますが、 int
toが許可されているのに、なぜこれが許可されていないのか理解できませんconst double&
か?