decvar
написал 14 августа 2006 года в 17:50 (1093 просмотра)
Ведет себя
как мужчина; открыл 111 тему в форуме, оставил 1838 комментариев на сайте.
SwatLogger& operator <<(std::ostream& (*f)(std::ostream &)) {
if (f != std::endl )
if (log) log << f;
else std::clog << f;
else {
time_t now = time(0);
std::string str(ctime(&now));
str.replace(str.find('\n'), 1, "");
sstr << '\0';
std::string strbuf = sstr.str();
std::cout << label[sev] << " " << strbuf << f;
if (log)
log << str << label[sev] << " " << strbuf << f;
else
std::clog << str << label[sev] << " " << strbuf << f;
sstr.freeze(false);
sstr.clear();
sstr.seekp(0);
sev = sev_trace;
}
return *this;
}
g++ 3.4 на него ругается так:
../include/SwatLogger.h:52: error: assuming cast to type `std::basic_ostream >&(*)(std::basic_ostream >&)' from overloaded function
что вообщем-то полный бред…
в результате ничего кроме как вот такой изъебской конструкции не придумал:
std::ostream& (*pEndl)(std::ostream &) = &(std::endl); if (f != pEndl ) ...
То что я написал — суть подпорка.
Вопрос: кто не прав? я или g++ ????
Последние комментарии
-
OlegL, 17 декабря 2023 года в 15:00 →
Перекличка
21
-
REDkiy, 8 июня 2023 года в 9:09 →
Как «замокать» файл для юниттеста в Python?
2
-
fhunter, 29 ноября 2022 года в 2:09 →
Проблема с NO_PUBKEY: как получить GPG-ключ и добавить его в базу apt?
6
-
Иванн, 9 апреля 2022 года в 8:31 →
Ассоциация РАСПО провела первое учредительное собрание
1
-
Kiri11.ADV1, 7 марта 2021 года в 12:01 →
Логи catalina.out в TomCat 9 в формате JSON
1
DevOps as a Service from Palark
24/7 SRE & DevOps service to cover all your Kubernetes needs.

Забавно, я всегда думал что конвертация между std::ostream и std::basic_ostream происходит без поблем. Кста, а ostream случайно не потомок basic_ostream-а?
должен быть
слушай, судя по
f — указатель на функцию, которая возвращает ostream и получает ostream. Тогда тут
ты её странно вызываешь…
твои предложения?
ну я так понимаю функцию надо вызывать как
void f(void)
что void f(void)? у тебя параметром в твой логгер, что передаётся? указатель на функцию, вот посмотри какие у неё параметры…