c++ - C++ 什么时候适合使用函数模板来生成模板函数而不是显式地编写函数?
问题描述
我正在做一些考试准备,我遇到了一个简短的答案描述问题
“我们想在 X、Y 和 Z 类型上独立执行一些功能。什么时候使用函数模板生成 3 个模板函数而不是显式编写 3 个函数最合适?”
我不完全确定这个问题在问什么,而且似乎在谷歌上找不到任何关于它的信息
解决方案
struct X{ /**/ };
struct Y{ /**/ };
struct Z{ /**/ };
你比较喜欢哪个
template <typename T>
void foo(T& t)
{
if (bar(t)) { foobar(t); }
}
超过
void foo(X& t)
{
if (bar(t)) { foobar(t); }
}
void foo(Y& t)
{
if (bar(t)) { foobar(t); }
}
void foo(Z& t)
{
if (bar(t)) { foobar(t); }
}
你比较喜欢哪个
template <typename T>
void foo(T& t);
template <>
void foo<X>(X& t)
{
if (barX(t)) { foobarX(t); }
}
template <>
void foo<Y>(Y& t)
{
foobarY(t);
}
template <>
void foo<Z>(Z& t)
{
if (barZ(t)) { foobarZ(t); }
}
超过
void foo(X& t)
{
if (barX(t)) { foobarX(t); }
}
void foo(Y& t)
{
foobarY(t);
}
void foo(Z& t)
{
if (barZ(t)) { foobarZ(t); }
}
推荐阅读
- javascript - 使用 Karma / Jasmine for Router 的 Angular 单元测试错误
- r - 如何将基因探针ID与R中数据框中的基因符号匹配
- javascript - 从对象的键中获取最大值
- linux - 批量运行带有传递值的 shell 脚本
- javascript - 如何刷新,仅重新加载页面上的音频标签而不重新加载页面
- jquery - 如何将自定义 CSS 类添加到 Wordpress 的 Astra 主题的主菜单按钮
- php - 许多人试图在日志中访问/latest/dynamic/instance-identity/document?安全问题?
- java - 如何将输入放入2个不同的数组
- powershell - PowerShell 'less' tool
- python-3.x - 未检测到 PiCamera