c++ - 为什么在现阶段,大多数现代 C++ 编译器只支持有限的 C++0x 功能,而 Clang/GCC 支持所有这些功能?

标签 c++ visual-c++ c++11 compiler-construction clang

<分区>

我是 C++11 的新手,发现找到替代方法使我的代码与 Clang 和 Visual C++ 兼容是一项艰巨而乏味的工作。

这个事实背后的原因是什么?是技术难点吗?与旧的非标准语言扩展的兼容性?不同的优先级?或者还有其他可能吗?

引用页:https://wiki.apache.org/stdcxx/C++0xCompilerSupport

最佳答案

Why most of the modern C++ compilers only support limited C++0x features, while Clang supports all of them?

clang 的设计比大多数其他主要编译器晚得多,并且其构建方式使其更容易支持某些现代功能。许多其他编译器,例如 MSVC 和 GCC,支持除 clang 之外的许多其他目标,并且具有庞大的遗留代码库。随着时间的推移,对这些编译器的更改往往会变得更慢。

and found it is a difficult and tedious work to find alternative ways to make my code compatible with both Clang and Visual C++.

一般来说,我发现如果您坚持使用子集(在本例中,为 Visual C++ 编写),那么 clang 通常会支持不做任何更改的代码,前提是您避免使用 Microsoft 语言扩展。转向另一个方向通常更具挑战性。

关于c++ - 为什么在现阶段,大多数现代 C++ 编译器只支持有限的 C++0x 功能,而 Clang/GCC 支持所有这些功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18580510/

相关文章:

c++ - 在课后使用 typedef ClassName< >

c++ - 使用 std::function 作为参数的可变参数模板

c++ - 添加行主矩阵和列主矩阵

c++ - 如何在 native C++ 中捕获整数除以零和访问冲突异常

Android:使用 NDK 构建 native GUI 应用程序?

c# - COM 基本链接

c++进程启动路径问题

c++ - 获取合适的存储值类型?

c++ - 当我使用 [=] 捕获(使用 Lambda 类)时,为什么变量会变为 'const'?

c++ - 无符号值之间的减法 - 意外结果