为什么"std::string(blablabla());"编译没有错误?
Why does "std::string(blablabla());" compile without errors?
为什么下面的代码编译时没有警告?注意blablabla()没有在任何地方定义。
我在gcc 5.1.0
和clang-3.7.0
中测试了它(有和没有-std=c++11标志)。
#include <string>
int main()
{
std::string(blablabla());
}
这个问题是不是最令人烦恼的解析歧义的副本,因为相关的示例声明了带有参数的函数。
啊,我真笨。
它不被视为调用。编译器将其视为声明…
尝试比较:
int main() {
int(blablabla);
}
这给:
test.c++: In function ‘int main()’:
test.c++:6:9: warning: unused variable ‘blablabla’ [-Wunused-variable]
int(blablabla);
^
更准确地说,您的语句std::string(blablabla())
声明blablabla
是一个返回std::string
的函数,与
std::string blablabla();
。局部函数声明
相关文章:
- 我的代码中有错误吗?使用BGI图形的C++代码对我不起作用
- 我的代码中有错误,未声明的标识符
- C++ LeetCode #377 的 DP 解决方案中,此代码是否有错误?
- 试图建立银行管理系统,但有错误
- 我试图创建临时对象的方式有错误吗
- 我的随机生成器是否不工作,或者我决定人/骨架是否击中对手的方式是否有错误
- 我在OpenCV中有错误的"approxPolyDP(ROI_Vertices, ROI_Poly, 1.0, true)"
- 验证(使用 static_assert)元组类型是否遵循某种顺序(有状态编译时检查)
- 我在这个 C++ 代码上有错误吗?
- 是视觉C++优化器错误还是我的代码中有错误?
- 为什么一个简单的C++程序会有错误的结果?是 #define 引起的吗?
- 为什么有条件编译运算符模板会更改另一个运算符的可用性?
- 对此有错误
- C :数据文件有错误:预期的无限制ID
- C 模板:如何根据数据类型有条件编译不同的代码
- 一个带有参数的程序,为什么此程序有错误的答案
- Qt Cmake 错误编译"GuiSupportQt not found"
- Opengl 精度转换错误编译错误 E0415
- 有错误的程序仍在编译吗
- 编译精细,建筑有错误'undefined reference to'