gpt4 book ai didi

c++ - const 引用的默认参数中使用的统一初始值设定项

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:21:58 33 4
gpt4 key购买 nike

这是合法的 c++0x 语法吗?

class A
{
public:
void some_function( const std::set<std::string> &options = {} );
// note that this is legal, which binds the const reference to a temporary:
void some_function( const std::set<std::string> &options = std::set<std::string>() );
}

因为如果是这样,我刚刚在 GCC 4.6 中发现了一个错误。

我得到的错误是:

error: expected primary-expression before '{' token

这是……合乎逻辑的……如果它是非法的。

更新:正如@Kerrek 所说明的,这渗透到纯 C++03 中,带有聚合和旧的大括号初始化语法。为什么这不可能?标准中是否禁止这样做?还是编译器有错?或者这是一个疏忽?我认为允许将此作为​​显式调用构造函数的替代方法没有任何严重问题。

最佳答案

它在 C++11 中有效,但它是 a very late addition Bjarne 提交的工作文件。所以 GCC 还不支持大括号默认参数也就不足为奇了。

关于c++ - const 引用的默认参数中使用的统一初始值设定项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6615823/

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