c++ - solaris (libCstd) 上的 std::sort 问题

标签 c++ stl solaris sunstudio

我在 Solaris 上使用 Sun Studio 编译器时遇到问题,这很可能是由于使用了奇怪的 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());

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.

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

最佳答案

看起来您的实际 vector 是常量。它是在 const 成员函数中访问的成员变量吗?它是一个 const 函数参数吗?

关于c++ - solaris (libCstd) 上的 std::sort 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5139975/

相关文章:

C++/OpenGL : How does Tesselation work?

C++通过Windows搜索路径查找可执行文件

c++ - 如何比较 multimap 中的值

c++ - 为什么 vector(size) 比 new[] 慢?

c++ - 需要帮助尝试调试奇怪的段错误

c++ - 在 solaris 上 boost 库信号量

linux - gzip 和管道输出(性能考虑)

c++ - 如果使用优化 (-O2, -O3),为什么这段代码的行为会有所不同?

c++ - C:分析 .obj 文件的实用程序,以精确字节测量某些函数的大小?

c++ - std::map:只使用keytype的一部分进行比较查找