gpt4 book ai didi

c++ - 为什么这个程序在 C++14 中编译得很好,但在 C++11 编译器中却不行?

转载 作者:搜寻专家 更新时间:2023-10-30 23:55:42 25 4
gpt4 key购买 nike

我最近在在线编译器上测试了下面这个简单的程序。查看现场演示 here .它编译得很好并给出了预期的输出,但是当我在 Dev C++ IDE 上测试它时,它在编译过程中失败了。

这是我的程序:

#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 上尝试过它,它给我的错误与 Dev C++ 给出的错误相同。

这是 C++14 的新特性吗?为什么它在 C++11 编译器中不起作用?

最佳答案

它适用于 C++14 和 works on C++11 .您很可能正在使用过时的编译器。

针对您的确切问题(参见 DR 1288)有一个已修复的错误 ( https://gcc.gnu.org/bugzilla/show_bug.cgi?id=50025)

C++0x initialization syntax doesn't work for class members of reference type

引自Jonathan Wakely

The original C++11 rules required a temporary to be created there and the reference member binds to that temporary.

来源:Defect Report 1288

关于c++ - 为什么这个程序在 C++14 中编译得很好,但在 C++11 编译器中却不行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30680752/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com