2011-04-29から1日間の記事一覧

C++0x で make_fused を書く

C++

Variadic Templates を使うことによって、驚くほど簡潔に書くことができます (Egg に合わせて fuse という名前にしています)。 #include <cstddef> #include <tuple> #include <type_traits> #include <utility> namespace fuse_detail { template <std::size_t ...Indexes> struct index_tuple { typedef index_tuple<Indexes..., sizeof...(Indexes)> next;</indexes...,></std::size_t></utility></type_traits></tuple></cstddef>…

関数適用演算子

Haskell には関数適用演算子 $ があり、しばしば括弧を省く目的で用いられます。C++ でもやってみましょう。 #include <utility> namespace apply { template <class F, class A> inline auto operator|=(F &&f, A &&a) -> decltype(std::forward<F>(f)(std::forward<A>(a))) { return std::fo</a></f></class></utility>…