2010-05-11

これはすごい

/sandbox/ftmpl

なかなか面白いが、型を変数として扱うのはどうなんだろう。型に対して操作したいときは、いちいちstd::valueメタ関数を使うのだろうか。もっとも、多くの場合(SFINAEに使いたい場合など)、すでにその型に対する変数(parameterの形などで)を作っているから、それを利用出来るだろうが。

#include "type.hpp"
#include "value.hpp"
#include "apply.hpp:
#include "is_same.hpp"

template < typename T1, typename T2 >
void f( T1 t1, T2 t2 )
{
    using namespace boost::ftmpl ;
    // true
    bool const result = unwrap_value< BOOST_FTMPL_UNWRAP(apply( is_same, t1, t2 ) ) >::type::value ;
    // type_t< true_t >
    using result_type = BOOST_FTMPL_UNWRAP( apply( is_same, t1, t2 ) ) ;
}

何にせよ、decltypeにより、夢が広がる。

No comments: