Fusion::transformのBoost.orgの例は次のとおりです。
struct triple
{
typedef int result_type;
int operator()(int t) const
{
return t * 3;
};
};
// ...
assert(transform(make_vector(1,2,3), triple()) == make_vector(3,6,9));
しかし、私は「それを理解している」わけではありません。それらの例のベクトルには、すべて同じタイプの要素が含まれていますが、融合を使用する主なポイントは、異種タイプのコンテナーです。彼らがmake_vector(1, 'a', "howdy")
代わりに使用した場合はどうなりますか?
int operator()(int t)
になる必要があります
template<typename T> T& operator()(T& const t)
しかし、どのようにresult_typeを記述しますか?template<typename T> typedef T& result_type
確かに有効な構文ではありません。関数に関連付けられていないため、有効な構文であっても意味がありません。