Код: Выделить всё
size_t count = 42;
std::vector my_vector;
vec.reserve(count);
std::copy_n(std::istream_iterator(std::cin), count, std::back_inserter(vec));
Код: Выделить всё
std::vector my_vector = get_from_cin(42);
Код: Выделить всё
std::list my_list = get_from_cin(42);
Код: Выделить всё
template
std::vector get_from_cin(size_t count) {
std::vector vec;
vec.reserve(count);
std::copy_n(std::istream_iterator(std::cin), count, std::back_inserter(vec));
return vec;
}
template
std::list get_from_cin(size_t count) {
std::list list;
std::copy_n(std::istream_iterator(std::cin), count, std::back_inserter(list));
return list;
}
int main() {
std::vector my_vector = get_from_cin(42);
}
Код: Выделить всё
main.cpp:36:34: error: call to 'get_from_cin' is ambiguous
36 | std::vector my_vector = get_from_cin(42);
| ^~~~~~~~~~~~~~~~~
...
Как я могу изменить код, чтобы устранить эту двусмысленность и полученный код вызова шаблонной функции максимально лаконичен?
PS. Я бы просто назвал эти две функции по-другому, но это противоречит стилю C++.
Подробнее здесь: https://stackoverflow.com/questions/787 ... eturn-type