2015-06-06 135 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功能。

相关问题