C++11、C++14、C++17?用什么?

标签 c++ c++11 c++14 c++17

<分区>

我曾经专业地使用 C++ 进行编程,但那是很久以前的事了。现在我回到它。男孩,C++ 进化了!

我一直在研究 C++11 中引入的最新特性,包括 lambda 表达式、良好的多线程支持(以前只支持 boost 的东西)等。

最近,在我的 Ubuntu 16.04 LTS 机器上,我一直在这样编译:

g++ -std=c++11 filename.cpp

但是,显然还有 C++14 和 C++17。如果我想完全了解现代 C++ 编程实践,我应该改为像这样编译吗?

g++ -std=c++17 filename.cpp

假设我的代码以任何一种方式编译,有什么理由不应该只使用 C++17 编译我的所有新代码?

我已经在深入研究 C++14 中的 shared_timed_mutex,但还没有玩过更新的东西,比如 atomic,它在 C++17 中。因此,在某些方面,我想我最终会需要 C++17。

我只是想了解在编译时始终使用 C++17 是否对我有任何伤害。

为了提供更多上下文,我只针对一个平台 (Ubuntu Linux) 进行编译。无需考虑向后兼容性或其他操作系统。考虑到这一点,考虑到我希望学习最新的 C++ 功能,我是否有任何理由不应该总是使用 C++17 进行编译?

或者,换句话说,截至今天,2018 年 4 月 11 日,我是否可以假设使用 -std=c++17 进行编译使用完全发布的功能,其中没有任何一项是实验性的?

最佳答案

答案取决于很多因素,但主要问题是您的库或应用程序的目标是什么? 您打算支持哪些平台?

有些平台没有最新版本的 C++ 编译器。事实上,有些平台只能提供 C++03。

由于新版本的 C++ 引入了一些新的很酷的功能和标准库 API,因此最好使用最新的 C++,它将涵盖您计划使用的所有平台。

如果您不知道使用什么平台,请考虑您希望使用的 C++ 特性,并使用可以提供这些特性的 C++ 的最小版本。这样您就可以推迟对受支持平台的决定。

关于C++11、C++14、C++17?用什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49786660/

相关文章:

c++ - c++11中的auto是静态类型还是动态类型

c++ - 错误 : Invalid use of void

c++ - 为什么我定义的返回指向另一个函数的指针的函数不起作用?

获取本地主机名和 IP 地址的 C++ Windows 函数调用

c++ - std::queue 是否具有事件机制(std::queue 中的信号)

c++ - 错误: no matching function for call C++

c++ - std::array<T, N> 可以释放它的数据吗?

c++ - std::function 接受具有不同传递类型参数的 lambda 函数(通过 ref,通过 val)

引用计数 native 类型的 C++ 模板

c++ - 如何在 Xcode 中更改构建线程的数量?