|
懂boost的人看看这个数据结构,评价一下
用来储存任意类型数据。后面带着两个接口,目的是结合使用variant和any的优点
- typedef boost::variant<char, unsigned char, short, unsigned short, int, unsigned int, long,
- unsigned long, int64, uint64, float, double, void * , bool, std::pair<int, int>,
- std::pair<float, float>, Any> Variant;
-
-
- template<class T1, class T2 = boost::mpl::find< Variant::types, T1>::type>
- class VariantData
- {
- public:
- static Variant set(const T1 & in)
- {
- return Variant(in);
- }
- static T1 get(const Variant & data)
- {
- return boost::get< T1 >(data);
- }
- };
- template<class T1>
- class VariantData<T1, boost::mpl::end<Variant::types>::type>
- {
- public:
-
- static Variant set(const T1 & in)
- {
- return Variant(Any(in));
- }
- static T1 get(const Variant & data)
- {
- return boost::any_cast<T1>(boost::get< Any >(data));
- }
- };
复制代码
有什么问题 帮忙批评 |
|