C ++自动函数返回类型实现[trailing-return-type]

时间:2010-05-30 01:15:18

标签: c++ boost

是否存在类似BOOST_AUTO的宏,它可以模拟C ++中函数的自动返回类型推导?

我的意思是trailing-return-type,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模板深。 可行,但非常混乱。

如果不是可以实施的东西,那没什么大不了的。现在我接受了宏,所以如果没有别的,我会继续使用它们。

谢谢

1 个答案:

答案 0 :(得分:0)