gpt4 book ai didi

c++模板特化参数重复

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:27:46 26 4
gpt4 key购买 nike

最近我注意到模板特化存在以下问题。

请注意,如果我们对 f 进行了以下特化,并且模板参数名称可以是很长的类型,可能派生自其他模板。

template <class T> void f(T t) {}

template <>
void f<VeryLongType>(VeryLongType t)
{
using T = VeryLongType;
// ...
}

请注意,这个很长的类型名称重复了 3 次。此外,如果 f 返回此类型的值,则会引入另一个重复项(auto 将是一种解决方法)。

我想知道是否存在一些简化的语法以便不需要重复?

可能像下面这样:

template <>
void f<T = VeryLongType>(T t)
{
// ...
}

最佳答案

你真的不需要明确指定特化类型,例如:

template <>
void f(VeryLongType t)
{
using T = VeryLongType;
// ...
}

很好。如果 VeryLongType 真的很长,可以使用 decltype(t) 缩短类型别名...

using T = decltype(t); // makes it more generic too

关于c++模板特化参数重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50418093/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com