tr1_tuple_auto_conv.cpp

来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 57 行

CPP
57
字号
#include <boost/tr1/memory.hpp>#include <boost/tr1/tuple.hpp>#include <boost/any.hpp>#include <iostream>namespace Core{    class AutoConverter    {        std::tr1::shared_ptr<boost::any> t_;    public:        AutoConverter(std::tr1::shared_ptr<boost::any> const & t)            : t_(t)        {}        template <typename C>        operator C ()        {            try            {                boost::any & a = (*t_);                return boost::any_cast<C>(a);            }            catch(boost::bad_any_cast & e)            {                std::cerr << "Internal conversion bug: "                          << "Failed to convert data holder to "                          << typeid(C).name() << "\n"                          << e.what()                          << std::endl;                C c = C();                return c;            }        }    };    inline AutoConverter Demo()    {        std::tr1::shared_ptr<boost::any> p_result            (new boost::any(std::tr1::make_tuple(1, 2, 3, 4)));        return p_result;    }} // namespace Coreint main(int argc, char* argv[]){    std::tr1::tuple<int, int, int, int> test = Core::Demo();    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?