2015-06-06 137 views
2

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

+1

[It is working](http://coliru.stacked-crooked.com/a/4fbf7065dd424257)。也許在C++ 11不完整的編譯器中缺少一些東西? –

+0

@MarcoA。是的,它在C++ 14編譯器中工作,但不能在C++ 11編譯器中工作。你有沒有在C++ 0x編譯器中試過這個程序? – Destructor

+3

@meet你有沒有注意到鏈接使用'-std = C++ 11',而不是'-std = C++ 14'? – hvd

回答

3

它適用於這兩個c++11和所有這些編譯器上的c++14

gcc 4.9.2 
gcc 5.1.0 
clang 3.5.0 

很可能您使用的是舊版本的gcc或其他編譯器,但尚未實現此C++ 11功能。

C++ 11由編譯器在各個階段實現。每個版本添加/改進/修復了一些C++ 11功能。

相關問題