小编Mi-*_*-La的帖子

如何强制g ++仅编译c ++ 11标准?

std::vector<bool>::emplace_back可用的唯一的,因为C ++ 14。但是,对于我的g ++ 5.4.0,即使我指定,它也可以编译-std=c++11

当我使用g ++ 4.8.4编译相同的代码时,它将失败。有没有办法说服g ++严格检查所选标准?

注意:我已经使用了-pedantic -Wextra -Wall

范例test.cpp

#include <vector>

int main()
{
    std::vector<bool> v;
    v.emplace_back(true);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

用编译g++ -std=c++11 test.cpp -o test。使用g ++ 5.4.0编译正常,g ++ 4.8.4触发:

test.cpp: In function ‘int main()’:
test.cpp:6:7: error: ‘class std::vector<bool>’ has no member named ‘emplace_back’
    v.emplace_back(true);
      ^
Run Code Online (Sandbox Code Playgroud)

c++ g++ c++11

10
推荐指数
1
解决办法
173
查看次数

标签 统计

c++ ×1

c++11 ×1

g++ ×1