我在使用Sun Studio編譯器的Solaris上遇到問題,很可能是由於使用了奇怪的STL實現(libCstd),請參閱http://developers.sun.com/solaris/articles/cmp_stlport_libCstd.html。考慮到這一點:solaris上的std :: sort問題(libCstd)
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
與自定義比較仿函數,但即使這個簡單的版本不起作用。
你可以發佈什麼C樣子? – murrekatt 2011-02-28 09:12:38