我有以下定义:
typedef boost::multi_index_container<
ModelPtr,
boost::multi_index::indexed_by<
boost::multi_index::sequenced<boost::multi_index::tag<byInsertOrder> >, // to keep order of inserting
boost::multi_index::ordered_non_unique< boost::multi_index::tag<byPriority>,
boost::multi_index::const_mem_fun<IModel,
unsigned int,
&IModel::getPriority>,
std::greater< unsigned int> // from the highest priority to the lowest
>
>
> ModelContainer;
typedef ModelContainer::template index<AOActivationList::byInsertOrder>::type ModelByInsertOrderType; (*)
问题是,当我尝试使用 gcc 4.5.3 编译它时,出现以下错误:错误:“模板”(作为消歧符)仅允许在标有 (*) 的模板中使用。在 Visual Studio 2008 中,它可以编译。
这是什么原因?如何解决?