我最近在一个在线编译器上测试了简单的下面的程序。查看现场演示here。它编译好了&给出了预期的输出,但是当我在Dev C++ IDE上测试它时,它在编译期间失败了。为什么这个程序在C++ 14中编译得很好,但在C++ 11编译器中不能编译?
这里是我的程序:
#include <iostream>
class Test
{
int s=9;
public:
int get_s()
{
return s;
}
};
int main()
{
Test s;
Test& t{s}; // error in C++11 but not in C++14 why???
std::cout<<t.get_s();
}
它给了我以下错误:
[Error] invalid initialization of non-const reference of type 'Test&' from an rvalue of type '<brace-enclosed initializer list>'
我也试图在代码块13.12 IDE &它给了我同样的错误作为开发的C++给出。
这是一个新的C++ 14功能吗?为什么它不能在C++ 11编译器中工作?
[It is working](http://coliru.stacked-crooked.com/a/4fbf7065dd424257)。也许在C++ 11不完整的编译器中缺少一些东西? –
@MarcoA。是的,它在C++ 14编译器中工作,但不能在C++ 11编译器中工作。你有没有在C++ 0x编译器中试过这个程序? – Destructor
@meet你有没有注意到链接使用'-std = C++ 11',而不是'-std = C++ 14'? – hvd