Вопрос про шаблонные функции

Рейтинг: -1Ответов: 1Опубликовано: 20.02.2023
template <int>
int foo()
{
    int y=9;
    return y;
}

template <float>
float foo()
{
    float y=9;
    return y;
}

Я хочу, чтобы по одному имени функции можно было работать с разными типами, поэтому сделала шаблонной. Но выскакивает ошибка. Здесь вариант с классом дроби.

template<int>
int foo()
{
    int y=9;
    return y;
}

template <class Ratio>
Ratio foo()
{
    Ratio res(5,6);//здесь вместо конструктора, который есть, пишет про лист инициализации, и также ошибка
    return res;
}

Ответы

▲ 1Принят
template <typename T>
T foo()
{
    T y = 9;
    return y;
}

Вот так как-то... :) А если для Ratio надо что-то отдельное, то после этого

template<>
Ratio foo()
{
    Ratio res(5,6);
    return res;
}

Но общий вариант с typename T — должен быть объявлен до спциализации.