Шаблоны, выводящие тип T из возвращаемого типа - PullRequest
0 голосов
/ 30 ноября 2018

У меня есть шаблон следующим образом:

template <class T>
vector<T> read_vector(int day)
{
  vector<T> the_vector;
  {...}
  return the_vector;
}

Я хотел бы иметь возможность сделать что-то вроде

vector<int> ints = read_vector(3);
vector<double> doubles = read_vector(4);

Возможно ли для шаблонов C ++ выводить тип возврата изкогда они вызываются, или я должен просто передать фиктивный аргумент в шаблон с типом, который я хочу, чтобы вектор имел?Последний работает, но грязнее.

1 Ответ

0 голосов
/ 30 ноября 2018
#include <vector>

struct read_vector
{
    int day;
    explicit read_vector(int day) : day(day) {}

    template <typename T, typename A>  
    operator std::vector<T, A>()
    {
        std::vector<T, A> v;
        //...
        return v;
    }
};

int main()
{
    std::vector<int> ints = read_vector(3);
    std::vector<double> doubles = read_vector(4);
}

DEMO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...