Sprout で constexpr fused

最近 Sprout をあんまり触っていなかったんですが、いつの間にか実装されていました。
使い方は Boost.Fusion と同じですね。

[ソース]

#include <sprout/functional.hpp>
#include <sprout/tuple.hpp>
#include <sprout/string.hpp>


struct sum{
    template<typename String>
    constexpr float
    operator ()(int a, String s, float f) const{
        return a + s.length() + f;
    }
};

int
main(){
    static_assert(sum()(10, sprout::to_string("homu"), 4.25f) == 18.25, "");

    static constexpr auto func = sprout::make_fused(sum());
    static constexpr auto args = sprout::make_tuple(10, sprout::to_string("homu"), 4.25f);

    static_assert(func(args) == 18.25f, "");

    return 0;
}


最近全然 C++ って無いですが、そろそろ C++分を補給したいところ。

[コンパイラ]

  • g++ (GCC) 4.8.0 20120415 (experimental)