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)