auto using parent是否意味着函数原型?
Can auto using parens mean a function prototype?
这个问题是由于无法对auto
关键字使用统一初始化语法引起的,因为它将其视为std::initializer_list<T>
(在这里的评论中解释)。
使用以下代码示例:
class X { };
int x( X() ); // function prototype (1)
auto x( X() ); // copy/move construction of an X, function prototype or compile-time error?
编译器用auto x
做什么?
每种可能性的推理:
复制/移动构造:我可以看到这是正确的行为,因为(1)被视为一种缺陷。
函数原型:似乎不太可能,因为没有返回类型。
编译时错误:如果编译器将此解析为函数原型,则可能由于缺少末尾返回类型而导致编译时错误。
c++ 0x标准说这应该被解释为什么?
我得到
error: 'x' function uses 'auto' type specifier without late return type
编译器期望类似
的内容auto x( X() ) -> int;
相当于第2行
相关文章:
- 函数如何通知用户它基于函数原型抛出异常?
- 在函数中拥有函数原型的目的是什么?
- 什么..(省略号)作为函数原型中唯一的函数参数,C++?
- 是否可以使用 libclang python 解析 cpp 文件中没有标头的函数原型
- 有没有办法在C++编译时更改函数原型?
- 省略函数原型中的返回类型
- 如何使用 "using" 关键字定义函数原型/签名
- 函数原型未初始化的局部变量
- 如何创建函数原型命名空间
- 标准库头文件函数原型的实现是如何用 c++ 编写的?
- 为什么这种类型的函数原型会引发错误?
- 函数指针类型不能用于函数原型
- 了解此函数原型
- 将字符串向量传递给函数和函数原型问题 c++
- 函数原型范围的有趣用法
- 为什么这不起作用(C++函数原型)
- 将数组传递到函数会在函数原型声明中出现错误
- 在头文件中的函数原型中获取指针数组:函数声明为 void
- 类/成员函数中的函数原型
- 函数原型中的字符串初始化