是否有某种方法可以指定功能模板参数是否是特定的模板类?
我将根据以下示例解释我的问题:
template <typename Param1, typename Param2>
class foo1
{
void lol();
};
template <typename Param1, typename Param2>
class foo2
{
void lol();
};
////////////////////////// FIRST OPTION //////////////////////////
template <typename Param1, typename Param2>
void func(foo1<Param1, Param2> a)
{
a.lol();
a.lol();
}
template <typename Param1, typename Param2>
void func(foo2<Param1, Param2> a)
{
a.lol();
}
////////////////////////// SECOND OPTION //////////////////////////
template <typename Foo_>
void func(Foo_ a)
{
a.lol();
a.lol();
}
///////////////////////////////////////////////////////////////////
int main()
{
return 0;
}
我的目标是为 func
- foo1
和 foo2
编写两个过载。
第一个选项
工作正常,但是我不喜欢我编写未使用的 func
的模板参数。
有什么方法可以避免在 func
的签名中编写模板参数?
我想到写类似的内容第二个选项
,但是问题是超载有所不同。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
使用模板参数使用使用。没有它们,
foo1
和foo2
只是类模板而不是类。最小化打字的一种简单方法是使用模板参数包:
如果需要此检查很多,则可以创建
概念
s(自C ++ 20):然后
func过载变得更简单:
demo
The template parameters are used. Without them,
foo1
andfoo2
are just class templates and not a classes.A simple way to minimize the typing would be to use template parameter packs:
If you need this check a lot, you can create
concept
s (since C++20):Then the
func
overloads become simpler:Demo