Cin*_*out 3 c++ g++ stdstring c++11 clang++
考虑以下初始化:
std::string falseString = false;
std::string trueString = true;
Run Code Online (Sandbox Code Playgroud)
有了g++ 5.2.0,编译器抛出警告falseString,而错误trueString.
随着clang++ 3.6 -std=c++11,编译器会引发错误都falseString还有trueString.
Q1)为什么不同的行为gcc即使两个初始化值都是相同的类型(bool)?
Q2)哪个编译器是正确的,为什么?标准说什么?
编辑:
错误:没有可行的从'bool'转换为'std :: string'(又名'basic_string')
警告:将'false'转换为'std :: __ cxx11 :: basic_string <_CharT,_Traits,_Alloc> :: basic_string(const _CharT*,const _Alloc&)的参数1的指针类型[与_CharT = char; _Traits = std :: char_traits; _Alloc = std :: allocator]'[ - Wconversion-null]