我目前正在 OpenSolaris 2009-06 上进行开发。Boost::MPL 文档似乎暗示不支持sun 编译器(该文档最后更新于 2004 年)。Boost 的顶级文档似乎表明支持 sun 编译器 5.10 及更高版本——我想这是一般级别的支持,还是包括 MPL?有没有人有关于 sun 5.10 编译器的 C++ 一致性状态的详细信息?
我总是可以使用 GCC 进行编译。
我在 Solaris 10 上使用 Boost 和 Sun 的 CC 编译器取得了一些成功,但这很痛苦。要记住的主要事情是你需要,
-library=stlport4 -features=tmplife -features=tmplrefstatic
在 CXXFLAGS 中为您编译的所有内容,我尝试过的所有仅模板库似乎都可以正常工作,(跳过所有需要编译的库,有关详细信息,请参见此处)
当然,这确实意味着您必须重新构建您需要链接到的任何库(如果他们已经使用了 stlport4,您将非常幸运)。
可悲的是,这是不使用 Boost 的唯一(微不足道的)正当理由 :-(
过去我自己也解决过这个问题,这让我很痛苦。
为了更具体地了解 Chris Huang-Leaver 的回答,您确实需要在 Sun 编译器上使用 STLPort4。Sun 提供的默认 STL 是不完整的,根据他们自己的文档(我会在某个时候追踪它)。Chris 提到的其他选项很有帮助,但它们并不是问题的根源。
好消息是 Sun还提供 STLPort 版本 4 及其编译器,因此您只需包含“-library=stlport4”标志即可切换到它。为什么他们提供 STL 的两个版本(一个半损坏),而不仅仅是一个正确的版本,我无法理解。
我想由于没有提供确切的答案,我必须自己发布一个。
opensolaris(2009.06) 和 boost-1.4.1 似乎运行良好。选择正确的./bjam
开关,boost::mpl
似乎与现有的 sun 编译器配合得很好。所以,据我所知,关于编译器支持的 mpl 文档已经过时了。