функция шаблона со значением по умолчанию - PullRequest
0 голосов
/ 20 января 2019

У меня есть функция шаблона:

template <typename T>
void foo(const T& container = {}) {
  // ... some implementation
}

Теперь я могу позвонить

foo<std::vector>(some_vector_param) or foo<std::map>(some_map_param)

Поскольку у меня есть значение по умолчанию для контейнера, я должен иметь возможность вызывать без каких-либо параметров.

foo()

Но на данный момент компилятор не знает, как его перевести, поскольку это может быть вектор или карта. Одним из решений является явное указание типа.

foo<vector>()

Есть ли способ для меня, чтобы избежать этого? Могу ли я позволить компилятору использовать вектор, если тип ввода отсутствует?

1 Ответ

0 голосов
/ 20 января 2019

Параметры шаблона также могут иметь аргумент по умолчанию:

template <typename T = vector<int>>
void foo(const T& container = {}) {
  // ... some implementation
  }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...