为什么g ++(4.8.2)使用c ++ 0x作为默认值?

时间:2015-06-05 01:38:48

标签: c++ c++11 g++ smart-pointers

我有一个代码,它使用自c ++ 11以来支持的std :: unique_ptr。

I.E.

我可以构建这个代码,但我仍然感到困惑。因为我的g ++版本是4.8.2,它支持c ++ 11。 g ++使用c ++ 0x作为默认值的原因是什么?我应该如何将c ++ 11设置为默认值?现在我正在使用cmake,所以也许我应该在CMakeLists.txt中设置c ++ 11 ..

#include <memory>

int main() {
        std::unique_ptr<int> p_int(new int(3));
        return 0;
}

Althoguh我的问题对它的建筑并不那么重要,我想清除我的想法!任何帮助将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:5)

g ++使用c ++ 0x作为默认值”:It doesn't的原因是什么。 c++11-std=gnu++98

工作草案的名称

g ++默认使用c++11。这是c ++ 98,其上添加了GNU扩展。由于这是很长时间的默认设置,因此在可预见的未来可能仍然是默认设置,以避免破坏使用它构建的代码。

如果你想使用alias g++="g++ -std=c++11" 作为默认值,你可以在bash中创建一个别名,例如:

{{1}}