求对bitset.to_string的标准用法的解释
C++ Primer第三版,4.12 bitset Operations 这一节中详细介绍了std::bitset 类。原文声称:
"
....
bitset< 32 > bitvec3( 012 );
....
we can convert any bitset object into a string representation using the to_string() operation:
string bitval( bitvec3.to_string() );
....
"
[ C++ Primer,3rd, P170~ 171 ]
然而在 VC 7.1 / DEV C++ 4.9.8 中这样的操作都是编译期错误:
=========================
std::bitset< 32 > bts;
bts.to_string();
=========================
bitset::to_string()在 VC 7.1中的原型返回 basic_string<_Elem,_Traits,_Ax> ,而to_string函数模版没有直接指派这三个参数。
调用时必须
=========================
a.to_string< char, std::char_traits<char>, std::allocator< char > > ();
=========================
我想问一下,究竟哪个符合C++标准? 难道C++ Primer仍然不是最纯正的ANSI C++么? 或者VC和DevC++编译器在这一点上不符合标准? 又或者标准变迁了?
如果C++ Primer在某些地方犯了类似错误,那么我读完他之后应该读什么书?