g++
次のコードで 3.3から奇妙なエラーが発生します。
#include <bitset>
#include <string>
using namespace std;
template <int N, int M>
bitset<N> slice_bitset(const bitset<M> &original, size_t start) {
string str = original.to_string<char, char_traits<char>, allocator<char> >();
string newstr = str.substr(start, N);
return bitset<N>(newstr);
}
int main() {
bitset<128> test;
bitset<12> result = slice_bitset<12, 128>(test, 0);
return 0;
}
エラーは次のとおりです。
関数 `std::bitset slice_bitset(const std::bitset&, unsigned int)': `,' トークンの前の構文エラー declarator-id として指定された「char_traits」 `char_traits' の宣言で 2 つ以上のデータ型 declarator-id として指定された「allocator」 「アロケータ」の宣言で 2 つ以上のデータ型 `>' トークンの前の構文エラー
それは本当にばかげたことに違いありませんが、私はすでにゴム製のアヒルと友人にそれを伝えましたが、役に立ちませんでした.
ありがとう、レイジーウェブ。