Rokiのチラ裏

学生による学習のログ

同じ型が入った std::tuple を楽に書きたい

同じ型が入った std::tuple を楽に書きたい - Qiitaというようであれば、オレオレライブラリsrook.mpl.variadic_playerでも、より簡単に記述できますよ〜、という紹介。

#include<srook/mpl/variadic_player.hpp>
#include<boost/type_index.hpp>
#include<iostream>
#include<tuple>

int main()
{
    using int6_tuple_type = // int型が6つのタプル
        srook::mpl::Transfer_t<
            std::tuple,
            srook::mpl::make_pack<int,6>
        >;
    using int3_char4_float2_tuple_type = // int型が3つ、char型が4つ、float型が2つのタプル
        srook::mpl::Transfer_t<
            std::tuple,
            srook::mpl::make_some_pack<
                srook::mpl::pack_setting<int,3>,
                srook::mpl::pack_setting<char,4>,
                srook::mpl::pack_setting<float,2>
            >
        >;

    std::cout<< boost::typeindex::type_id< int6_tuple_type >().pretty_name()<<std::endl;
    std::cout<< boost::typeindex::type_id< int3_char4_float2_tuple_type >().pretty_name()<<std::endl;
}
std::__1::tuple<int, int, int, int, int, int>
std::__1::tuple<int, int, int, char, char, char, char, float, float>

実装は以下のように楽チン&簡単。