我曾经从事过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,但还没有使用过更新的东西,例如C++17中的atomic。 因此,在某些方面上,我认为我最终需要C++17。
我只是想知道,如果我总是使用C++17进行编译,是否有任何危害。
提供更多背景信息,我只为一个平台(Ubuntu Linux)进行编译。不需要考虑向后兼容性或其他操作系统。 从这个角度来看,考虑到我希望学习最新的C++功能,是否有任何理由我不应该始终使用C++17进行编译?
或者,换句话说,截至今天的日期,2018年4月11日,我可以假设使用-std=c++17进行编译将使用完全发布的功能,没有任何实验性质的内容吗?
-std=c++17
编译。您需要GCC 7.x才能完全支持C++17。最简单的方法是等到本月底发布18.04或使用非官方存储库。 - Fibbs