开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
G++, Linux
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
请问各位大大,为什么这段程式码 compile 不过?
小弟跪求解释
int main() {
int *b = 0;
const int *& n = b;
}
错误讯息:
error: invalid initialization of non-const reference of type 'const int*&' from an rvalue of type 'const int*'
我有找到这篇说是因为type-safe 的关系:
http://stackoverflow.com/a/11514730
但是如果把程式改成这样,也没有type-safe,可是却可以成功compile
int a = 0;
int *b = &a;
const int & n = *b;
cout << n << endl; // n = 0
*b = 3;
cout << n << endl; // n = 3
又看到了这篇的回答:http://stackoverflow.com/a/31412466
但是却也看不太懂他的回答是什么意思,为什么它会回传rvalue?
还有,为什么宣告成 const int * const & n = b 就可以compile 过?
感谢各位大大!
程式码(Code):(请善用置底文网页, 记得排版)
http://ideone.com/W5kqRr
补充说明(Supplement):