Работает ли std::endl с cout и wcout?

Мне интересно, работает ли std::endl с std::cout и std::wcout?

Кто-нибудь ясно по этому поводу?

1 ответ

Решение

Да. По факту, std::endl шаблон функции, который будет работать в качестве манипулятора на любой специализации std::basic_ostream шаблон.


Более подробно: 27.7.3.6 предписывает, что std::basic_ostream шаблон содержит перегрузку для operator<< следующее:

basic_ostream<charT, traits> &
operator<<(basic_ostream<charT, traits> (*pf)(basic_ostream<charT, traits> &));

Влияние вызова этой перегрузки на подходящую функцию return pf(*this), Итак, когда вы говорите, std::cout << std::endlэто на самом деле становится std::endl(std::cout) и возвращает ссылку на объект потока.

Все остальные ostream-манипуляторы пишутся таким же образом и аналогично для манипуляторов ввода.


Магия endl Шаблон функции - это вызов widen('\n'), который производит правильные данные "новой строки" для данного типа символа.

Другие вопросы по тегам