功能模板具有相同的参数

时间:2012-11-05 14:19:38

标签: c++ templates

使用相同参数制作功能模板的最佳方法是什么?

例如:

template<class T>
int foo(const T &item) {
    // ...
    return item;
};

template<class T, class NotUsed>
char foo(const T &item) {
    // ...
    return item;
};

int main()
{

    std::cout << foo(1)   << std::endl; // 1
    std::cout << foo('1') << std::endl; // 1

    return 0;
}

1 个答案:

答案 0 :(得分:4)

根据您的尝试,我建议将返回类型设置为模板参数。

template<class T, class Return = int>
Return foo(const T &item) {
    // ...
    return item;
};

int main()
{
    std::cout << foo<int, int>(1)   << std::endl; // 1
    std::cout << foo<char, char>('1') << std::endl; // 1
    return 0;
}