施工中的自我参考
Self reference in construction
我刚刚发现以下代码同时使用 gcc 5.4 和英特尔编译器 18.0.2 进行编译。Clang 6.0.0 只是给出了一个警告。
#include <vector>
int main() {
std::vector<double> v = v;
return 0;
}
我的代码中有一个非常相似的错误,我害怕这些代码可以编译。我的问题是:
- C++合法吗?如果是,它应该做什么?
- 如何在编译时捕获这些"错误"?
合法C++吗?如果是,它应该做什么?
这是一个格式良好的程序,但它表现出未定义的行为,因为它读取一个未初始化的变量。这意味着它的行为没有任何限制(它可以合法地做任何事情(。
如何在编译时捕获这些"错误"?
启用足够的警告并使用"将警告视为错误"进行构建。有了足够的警告,gcc 5.4 可以正确捕获它。请注意,对于 gcc,这也需要启用优化功能,因为 gcc 仅在优化时执行某些分析(例如未使用的变量(。
相关文章:
- C++错误消息*成员参考.**初学者*
- 在决定是通过参考还是通过价值时,尺寸真的是一个问题吗
- 参考资源文件VC++中的$(SolutionDir)
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 为什么在运算符重载时需要参考?
- 使 \page 和 \subpage 参考 doxygen 中的方法文档
- std::shared_ptr 自定义参考计数器
- 英特尔 TBB 程序不会终止,可能会误用参考计数器
- 这个SSDO演示的GLSL版本要求是自我冲突的吗
- 避免在基于反向范围的for循环实现中悬挂参考
- 通用参考 l 值不复制对象
- 标准::enable_if和通用参考的使用差异
- 标准::积累参考?
- C++丢失了参考
- 施工中的自我参考
- 没有对象或结构的自我参考Typedef
- 如何使用自我参考类型并在C 类中使用别名
- C 通过传递的参考来修改自我
- 课堂自我参考问题
- 关于C++具有自我参考的类