我有需要共享包含指针的各种类型如下一个boost ::变种的类:应用一个boost :: MPL ::列表类型的模板参数
template <typename ToySharedPtrVariant, typename ColorSharedPtrVariant>
class ToyPicker {
typedef std::pair<
ToySharedPtrVariant,
ColorSharedPtrVariant
> toyAndColorPair;
typedef std::map<
std::string,
std::vector<
toyAndColoPair
>
> stringToToyColorPairMap;
// ... methods that use the defined types...
}
该类目前需要以下形式的模板参数进行编译:
ToyPicker<
boost::variant<
boost::shared_ptr<ToyModel>
>,
boost::variant<
boost::shared_ptr<BlueToy>,
boost::shared_ptr<RedToy>,
boost::shared_ptr<GreenToy>
>
> toyPicker;
如何使用MPL列表,以便我可以允许用户进行以下的简单得多的定义,然后将其转换成例如格式我上面的类实现里面?
ToyPicker<
boost::mpl::list<
ToyModel
>,
boost::mpl::list<
BlueToy,
RedToy,
GreenToy
>
> toyPicker;
的boost :: make_variant_over将创建一个变种,不在变,shared_ptr的 ...> –
2010-12-18 07:28:23
权,荣誉给icecrime为比我更彻底:) – andreabedini 2010-12-19 01:38:49