-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 に答える