solaris上的std :: sort问题(libCstd)

lyt*_*nyn 1 c++ solaris stl sunstudio

我在使用Sun Studio编译器的Solaris上遇到问题,这很可能是由于使用了奇怪的STL实现(libCstd),请参阅http://developers.sun.com/solaris/articles/cmp_stlport_libCstd.html.考虑一下:

std::vector<C*> v;
// .. populate the vector
std::sort(v.begin(), v.end());
Run Code Online (Sandbox Code Playgroud)

C某个班级在哪里.这会产生以下编译器错误消息:

"/opt/sunstudio12.1/prod/include/CC/Cstd/./algorithm", line 725: Error: The operand "*first" cannot be assigned to.
"/opt/sunstudio12.1/prod/include/CC/Cstd/./algorithm.cc", line 985:     Where: While instantiating "std::__linear_insert<C*const*, C*>(C*const*, C*const*, C**)".
"/opt/sunstudio12.1/prod/include/CC/Cstd/./algorithm.cc", line 985:     Where: Instantiated from std::__insertion_sort<C*const*>(C*const*, C*const*).
"/opt/sunstudio12.1/prod/include/CC/Cstd/./algorithm", line 811:     Where: Instantiated from non-template code.
Run Code Online (Sandbox Code Playgroud)

有人知道如何规避这个问题吗?当然,实际上我想使用std::sort自定义比较仿函数,但即使是这个简单的版本也行不通.

Eri*_*rik 5

看起来你的实际矢量是常量.它是const成员函数中访问的成员变量吗?它是一个const函数参数吗?