这是合法的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中发现了一个错误。
我得到的错误是:
错误:在'{'标记
之前预期的primary-expression
这是......逻辑......如果它是非法的。
UPDATE:正如@Kerrek所说,这会渗透到普通的C ++ 03中,带有聚合和旧的大括号初始化语法。为什么这不可能?是否禁止使用标准?或编译器有错?或者这是疏忽吗?我没有看到任何严重的问题,允许将其作为明确调用构造函数的替代方法。