C++ 流的基础<;无符号字符>;在gcc中失败了

C++ 流的基础<;无符号字符>;在gcc中失败了,c++,gcc,C++,Gcc,我在下面列出了一些工作代码 ofstream of("/home/joe/test.dat", ios::out | ios::binary); of.write((char*)&dat[0],dat.size()); 但是下面的代码不产生任何输出 basic_ofstream<unsigned char> of("/home/joe/test.dat", ios::out | ios::binary); of.write(&dat[0],dat.size());

我在下面列出了一些工作代码

ofstream of("/home/joe/test.dat", ios::out | ios::binary);
of.write((char*)&dat[0],dat.size());
但是下面的代码不产生任何输出

basic_ofstream<unsigned char> of("/home/joe/test.dat", ios::out | ios::binary);
of.write(&dat[0],dat.size());
basic_流(“/home/joe/test.dat”,ios::out | ios::binary);
of.write(&dat[0],dat.size());
我尝试在linux上使用GCC4.9。请注意,没有编译警告或错误。

这不起作用:

basic_ofstream<unsigned char> of("/tmp/test2.dat", ios::out | ios::binary);
of.write(&dat[0],dat.size());  
basic_流(“/tmp/test2.dat”,ios::out | ios::binary);
of.write(&dat[0],dat.size());
但这是可行的:

basic_ofstream<char> of("/tmp/test3.dat", ios::out | ios::binary);
 of.write((char*)&dat[0],dat.size());  
basic_流(“/tmp/test3.dat”,ios::out | ios::binary);
of.write((char*)&dat[0],dat.size());

实现没有义务提供
std::char_traits
的实例化,也没有义务提供不兼容实例化的实例化。它可能适用于特定的编译器,但不是必需的。

出于同样的原因,我想我可能会遇到与basic_string类似的问题。如今,GCC支持unsigned char,但Clang仍然不支持: