に、オペレータは>>以下のコードを検討:libstdc++
とg++
でコンパイルのlibstdc betwen挙動の違い++とのlibC++:ビット集合
#include <bitset>
#include <sstream>
#include <iostream>
int main(int argc, char* argv[])
{
std::stringstream stream;
std::bitset<1> bitset(1);
std::cout<<"before = "<<bitset[0]<<std::endl;
stream<<"4";
stream>>bitset;
std::cout<<"after = "<<bitset[0]<<std::endl;
return 0;
}
を、結果は:
libc++
と
clang++
でコンパイル
> g++ bitset_empty.cpp -o bitset_empty
> ./bitset_empty
before = 1
after = 1
結果は次のとおりです。
> clang++ -stdlib=libc++ bitset_empty.cpp -o bitset_empty
> ./bitset_empty
before = 1
after = 0
どちらが正しいですか?両方(未定義の動作のため?)? GCC?クラング?