【发布时间】:2014-02-16 03:22:21
【问题描述】:
C++11 为语言的核心方面带来了新的关键字和新的变化。
那么是否有可能在 C++11 和 pre-C++11 中成功编译同一段代码,但从每个二进制文件中得到不同的结果? pre-C++11 指的是 C++98、C++03 或 C+ +TR1。
我问的原因是因为我有一堆小程序都是用 C++ 编写的。我不知道编写的每个单独程序的标准是什么。如果这些程序都在 C++11 以及更早的标准中编译,它们的行为是否保证相同?我想在 C++11 中编译它们(如果可以的话),但如果考虑到早期的标准,请避免任何可能导致程序行为不同的细微变化。
工作示例将不胜感激。
【问题讨论】:
-
这是编写单元测试和执行回归测试的原因吗?
-
@chris 不,不是破坏性更改。仍然可以编译但行为不同的标准之间的变化
-
@EdHeal 同意,但我有兴趣特别了解 C++ 标准中的非破坏性但行为不同的变化。
-
@TrevorHickey,那里有很多可以编译但行为不同的示例。
标签: c++ c++11 language-lawyer undefined-behavior