(我似乎无法为此范例找到名称,但如果可以的话,您将获得奖励upvote!)此模板范例用于防止数组衰减到指针:使用返回数组模板参数
template <size_t N>
void foo(const char (&bar) [N]);
我们都能够使用N
在foo
的身体得到规模过bar
。鉴于const char array[] = "lorem ipsum"
,我们使用此呼叫foo(array)
来将bar
定义为const char (&) [12]
,其有效地传递2个参数用于一个的价格。
我想用这个同样的想法,但在返回,例如:
template <size_t N>
const char (&) [N] foo(const char (&bar) [N]);
,这样我就可以通过此阵列,并有另一个引用它,比如:auto result = foo(bar)
我这里的代码产生错误:
unrecognizable template declaration/definition
这可能吗?
编辑:
为了澄清,我希望能够有一个函数返回,这将导致相当于:
auto& result = bar;
这样result
将是一个const char (&) [*]
,其中*
是尺寸为bar
。
它被称为“通过参考”:-) –
@KerrekSB嗯......我希望有些更奇特的东西,但我想它是:J –