boost::variant<T1, T2>类型变量的适配

来源:互联网 发布:国密算法和国际算法 编辑:程序博客网 时间:2024/04/30 12:10

本文我们将介绍boost::variant<T1, T2>类型变量的赋值问题,以及类的类型转换运算符重载函数的调用时机。

#include <limits>                            // for numeric_limits<T>template<typename T>class Null();template<>class Null<int>{public:    operator int()    {        std::cout << "Null<int>::operator int()" << std::endl;        return std::numeric_limits<int>::max();    }};template<>class Null<double>{public:    operator double()    {        std::cout << "Null<double>::operator double()" << std::endl;        return std::numeric_limits<double>::max();    }};
#include <boost\variant.hpp>int main(int, char**){    boost::variant<int, double> v = Null<int>();                    // Null<int>::operator int()                    // 赋值运算右侧的 Null<int>() 其实是一个类类型                    // 想要将一个对象赋值给一个变量,需要调用其运算符重载,此时该对象它只提供了int()的类型重载。                    // 试想,如果Null<int>类类型提供的运算符重载是operator double()类型的,它则会调用double类型的运算符重载    double d = Null<int>();                    // Null<int>::operator int()};
0 0
原创粉丝点击