有没有办法告诉g++
启用 C++11 的新语言功能,而不会由于 ABI 修改而对标准 C++ 库进行任何重大更改?
添加-std=c++11
编译标志告诉g++
启用语言和库功能,但是以这种方式创建的目标文件不能与使用不同-std=
设置的目标文件安全链接。我希望能够使用语言增强功能,例如右值引用、移动构造函数(用于我自己的类)以及auto
与 C++03 库链接的代码中的关键字。
编辑:
我有兴趣g++
启用它的 C++11语言功能,但我希望它能够解析、编译和链接旧的 C++03 库。我不希望它使用标准库的 C++11 版本。这意味着在我自己的代码中,我将能够使用auto
、范围 foreach 构造、右值引用等,但我将无法使用标准 C++ 库中的新 C++11 功能,例如std::move
右值或右值-ref 对 STL 容器的增强。不想要 C++11 版本的标准库的原因是各种对象的布局发生了变化,因此将两个期望不同版本标准库的对象文件链接到同一个二进制文件中是无效的。