有没有像BOOST_AUTO这样的宏,允许在C++中模拟函数的自动返回类型推导?
我的意思是像拖尾返回型的东西,http://en.wikipedia.org/wiki/C%2B%2B0x#Alternative_function_syntax
这就是我所拥有的:
using namespace boost::fusion;
#define AS_VECTOR(var, expr) BOOST_AUTO(var, as_vector(expr))
AS_VECTOR(b, erase(arguments, advance_c<N>(begin(arguments))));
AS_VECTOR(a, insert_range(b, advance_c<N>(begin(b)), vector_tie(i)));
while (i < upper()(a))
{
//apply<T>(*this, f, a);
++i;
}
#undef AS_VECTOR
erase和insert_range的实例化创建了非常疯狂的模板。所以我想知道有没有可能用AS_VECTOR代替宏函数,而不必声明返回类型。
完整的源代码在这里:Suggestions on syntax to express mathematical formula concisely
基本上,在上面的代码片段和上面链接中的运算符定义中,理想情况下,我希望从函数/运算符体推断返回类型(因为它只有单行)。我尝试使用BOOST_TYPEOF,但是一般来说,我不能控制如何实例化参数,所以不起作用。
例如,上面两个宏代码片段实际上是replace_at
。试图让它成为一个独立的函数会导致返回参数,这就像6-7个模板一样深。可行,但非常混乱。
如果它不是可以实现的东西,那也没什么大不了的。现在,我只能使用宏,所以如果没有其他问题,我将继续使用它们。
谢谢
发布于 2010-05-31 02:03:08
boost result_of库怎么样?
http://www.boost.org/doc/libs/1_43_0/libs/utility/utility.htm#result_of
https://stackoverflow.com/questions/2937184
复制相似问题