zoukankan      html  css  js  c++  java
  • test boost::fusion

    // testBoost.cpp : Defines the entry point for the console application.
    //

    #include "stdafx.h"

    #if 1

    #include <boost/fusion/sequence.hpp>
    #include <boost/fusion/include/sequence.hpp>
    #include <boost/fusion/include/vector.hpp>
    #include <string>
    #include <iostream>
    #include <boost/fusion/algorithm.hpp>
    #include <boost/fusion/include/algorithm.hpp>
    #include <boost/fusion/support/is_sequence.hpp>
    #include <boost/fusion/include/is_sequence.hpp>

    template <bool IsSeq> struct print_xml;

    template <>
    struct print_xml<false>
    {
        template <typename T>
        void operator()(T const& x) const
        {
            std::cout
                << '<' << typeid(x).name() << '>'
                << x
                << "</" << typeid(x).name() << ">\n"
                ;
        }
    };

    template <>
    struct print_xml<true>
    {
        template <typename T>
        void operator()(T const& x) const
        {
      boost::fusion::for_each(x, value_printer());
        }
    };

    struct value_printer
    {
        template< typename T > void operator()(T const& x) const
        {
            print_xml<boost::fusion::traits::is_sequence<T>::value > printXml;
      printXml(x);
        }
    };

    int _tmain(int argc, _TCHAR* argv[])
    {
     typedef boost::fusion::vector<int, char, std::string> Stuff;
     Stuff stuff(1, 'x', "howdy");
     boost::fusion::vector<int, char, Stuff> stuff2(2, 'y', stuff);

     int i = boost::fusion::at_c<0>(stuff);
     char ch = boost::fusion::at_c<1>(stuff);
     std::string s = boost::fusion::at_c<2>(stuff);

     //boost::fusion::for_each(stuff, print_xml());
     value_printer()(stuff2);

     return 0;
    }

    #endif

  • 相关阅读:
    fedora 20 安裝 及 配置桌面環境
    2014上半年—Linux操作系统—嵌入式开发—中考
    【hdu 1864】最大报销额
    【hdu 1067】Gap
    【t055】成绩统计
    【b094&&z14】靶形数独
    【z06】观光公交
    【u213&&t037】修剪花卉
    【t062】最厉害的机器人
    【t075】郁闷的记者
  • 原文地址:https://www.cnblogs.com/cutepig/p/1826506.html
Copyright © 2011-2022 走看看