pluffie
@pluffie
Стыдно за старые вопросы

Почему std::endl не требует круглых скобок?

std::endl является функцией, но не требует круглых скобок, если использовать её с std::ostream (возможно это относится вообще ко всем наследникам std::basic_ostream, я не проверял и буду благодарен, если расскажете).
std::cout << std::endl; // Абсолютно валидный код
Как так? У меня есть предположение, что существует отдельная перегрузка оператора << специально под указатель (или что там выдаёт обращение к функции без круглых скобок скобок?) на эту функцию. Это реально так?
  • Вопрос задан
  • 151 просмотр
Решения вопроса 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Да, это реально так. Более того, при желании, можно написать свое такое же - например, как в моем миниатюрном классе логов:
Lout& operator << (Lout& out, Lout& (*func)(Lout&));
Lout& operator << (Lout& out, std::function<Lout& (Lout&)>&&func);

//stream commands & modifiers
Lout &anounce(Lout &ret);
Lout &flush(Lout& out);
Lout &ok(Lout& out);
Lout &fail(Lout& out);
Lout &newLine(Lout& out);
Lout &pop(Lout& out);
Lout &Color(Lout& out, const uint8_t);
Lout &noColor(Lout& out);
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы