-3

制作具有相同参数的函数模板的最佳方法是什么?

例如:

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

1 回答 1

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;
}
于 2012-11-05T14:31:01.687 回答