我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)' 中: ',' 标记前的语法错误 `char_traits' 指定为 declarator-id `char_traits' 声明中的两个或多个数据类型 `allocator' 指定为 declarator-id `allocator' 声明中的两个或多个数据类型 `>' 标记前的语法错误
这一定是一件非常愚蠢的事情,但我已经把它告诉了我的橡皮鸭和一个朋友,但无济于事。
谢谢,懒人网。