首页 > 解决方案 > C++ 什么时候适合使用函数模板来生成模板函数而不是显式地编写函数?

问题描述

我正在做一些考试准备,我遇到了一个简短的答案描述问题

“我们想在 X、Y 和 Z 类型上独立执行一些功能。什么时候使用函数模板生成 3 个模板函数而不是显式编写 3 个函数最合适?”

我不完全确定这个问题在问什么,而且似乎在谷歌上找不到任何关于它的信息

标签: c++function-templates

解决方案


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); }
}

推荐阅读