我最近在一個在線編譯器上測試了簡單的下面的程序。查看現場演示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