выходной вектор <T> в шаблонной функции

Этот раздел кода выдает ошибку:

template <class T>
void print_vector(vector<T>& v, string sep)
{
    std::ostream_iterator<T> ostr_it(std::cout, sep) ;
    std::copy(begin(v), end(v), ostr_it);
}
  

main.cpp: 17: 30: ошибка: нет подходящего конструктора для инициализации 'std :: ostream_iterator <float>'      станд :: ostream_iterator & л; Т > ostr_it (std :: cout, sep);

Я запутался, потому что если я сделаю это вне функции шаблона и выведу вектор напрямую, ошибки не будет:

vector<float> result(elements);
std::copy(begin(result), end(result), ostream_iterator<float>(cout, ", "));

Что не так? Нужно ли специализировать каждую функцию шаблона?

4 голоса | спросил Ivan 6 Maypm18 2018, 22:47:15

1 ответ


0
Так как никакого ответа не было отправлено, я думаю, я продолжуСигнатура для ---- +: = 0 =: + ---- принимает это C-строка, а не строка C ++:Было выбрано, что неявное приведение к ---- +: = 2 =: + ---- из ---- +: = 3 =: + ---- нежелательно, как сказано здесь , так что вы получитеошибка.Чтобы это сработало, вы можете просто разыграть ---- +: = 4 =: + ---- себя:
ответил Kosta 8 Mayam18 2018, 03:08:23

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132