У меня есть функция шаблона:
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>()
Есть ли способ для меня, чтобы избежать этого? Могу ли я позволить компилятору использовать вектор, если тип ввода отсутствует?