GCC 是否准备好用于 C++14 生产代码?
Is GCC ready for C++14 production code?
在this web page中,GCC对ISO C++14标准的支持定义为“experimental”。
由于我想在我的 C++ 代码中使用 C++14 对 C++11 的一些改进(例如 std::make_unique
和通用 lambdas),我使用 [=11 是否安全=] 选项与 GCC 4.9 用于生产代码,或者当前 GCC/C++14 状态有点像 "beta" 所以 GCC/C++14 还没有准备好用于生产代码?
is current GCC/C++14 status kind of like "beta" and so GCC/C++14 not ready for production code?
这取决于您使用的功能。 make_unique
非常简单,易于实施,应该是安全的。
其他一些新功能(尤其是核心语言功能)需要更多的工作才能实现,并且可能有更多的错误等待被发现和修复。
所以没有单一的 "it's ready" 或 "it's not ready" 答案。
然而,需要注意的一件重要事情是,虽然它仍然被标记为实验性的,但没有尝试保持 GCC 4.x 和 GCC 5 之间的向后兼容性,例如。因此,如果你有使用 GCC 4.8 构建的 C++11 代码,如果你想 link 到使用 4.9 构建的其他 C++11/C++14 对象,并且类似地 if/when 你移动到 GCC 5:重新编译所有使用 C++11 或 C++14 的对象(因为 std::tuple
等类型改变了 GCC 5 中的数据布局)。
对于 C++03 代码,我们不会在版本之间更改定义,因此它们是稳定的。
在this web page中,GCC对ISO C++14标准的支持定义为“experimental”。
由于我想在我的 C++ 代码中使用 C++14 对 C++11 的一些改进(例如 std::make_unique
和通用 lambdas),我使用 [=11 是否安全=] 选项与 GCC 4.9 用于生产代码,或者当前 GCC/C++14 状态有点像 "beta" 所以 GCC/C++14 还没有准备好用于生产代码?
is current GCC/C++14 status kind of like "beta" and so GCC/C++14 not ready for production code?
这取决于您使用的功能。 make_unique
非常简单,易于实施,应该是安全的。
其他一些新功能(尤其是核心语言功能)需要更多的工作才能实现,并且可能有更多的错误等待被发现和修复。
所以没有单一的 "it's ready" 或 "it's not ready" 答案。
然而,需要注意的一件重要事情是,虽然它仍然被标记为实验性的,但没有尝试保持 GCC 4.x 和 GCC 5 之间的向后兼容性,例如。因此,如果你有使用 GCC 4.8 构建的 C++11 代码,如果你想 link 到使用 4.9 构建的其他 C++11/C++14 对象,并且类似地 if/when 你移动到 GCC 5:重新编译所有使用 C++11 或 C++14 的对象(因为 std::tuple
等类型改变了 GCC 5 中的数据布局)。
对于 C++03 代码,我们不会在版本之间更改定义,因此它们是稳定的。