Boost.org给出的 fusion::transform示例如下:
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
当然不是有效的语法,即使它是没有意义的,因为它与函数无关。