使用同一模板的多个函数

Multiple functions using the same template?

本文关键字:函数      更新时间:2023-10-16

是否可以在同一模板中包含多个函数,而不是重写模板两次?就像你在写:

template <typename T>
void A() {
    //...
}
template <typename T>
void B() {
    //...
}

这些不是相同的函数,但它们共享一个相似的模板(使用通用类型 T )。有没有办法只初始化一次模板?

将它们

分组到类模板中可以实现这一点。

template <class T>
struct Functions {
    static void A() { /*...*/ }
    static void B() { /*...*/ }
};

但是,您失去了从函数的参数推断T的能力,并且调用语法更长:

Functions<double>::A();