Size: a a a

2020 August 25

AP

Alexander Potapov in supapro.cxx
Можно написать n.operator<<(nonOk);
источник

CD

Constantine Drozdov in supapro.cxx
Я тщательно перечитал overload resolution и так и не понял, почему gcc ее может разрешить
источник

AZ

Aleksander Zholtkovs... in supapro.cxx
т.е. единственным нормальным вариантом будет написание отдельной функции конвертирующей мой enum в строку и явный её вызов?
источник

IZ

Ilia Zviagin in supapro.cxx
Мне даже мозг лень поворачивать в эту сторону, твоя проблема очевидна, как и очевидно, как сделать так, чтобы всё работало -- это НЕ ДЕЛАТЬ КАК ТЫ.

Но объяснить я это не могу.

Не делай выводы ( << ) мемберами, и не нужно для енума писать шаблонный вывод, достаточно в std::ostream базовый его вывести.
источник

AZ

Aleksander Zholtkovs... in supapro.cxx
ostream слишком жирный, не влезает в прошивку
источник

AP

Alexander Potapov in supapro.cxx
Alexander Potapov
Можно написать n.operator<<(nonOk);
Собственно вот рещение че не устраивает
источник

CD

Constantine Drozdov in supapro.cxx
я тоже не понял шаблонный вывод
источник

AP

Alexander Potapov in supapro.cxx
Так точно однозначно. Иначе там шаблон, сям шаблон, какой брать не понятно
источник

AP

Alexander Potapov in supapro.cxx
в чем разница между внешней функцией и мембером? Как раз в том, что первый аргумент this. Если это надо показать, то явно и пишите
источник

CD

Constantine Drozdov in supapro.cxx
Aleksander Zholtkovskii
ostream слишком жирный, не влезает в прошивку
В общем, если внимательно посмотреть на этот пример, совершенно очевидно, что семантически "operator<<" в двух разных употреблениях выражают разные операции, и std соответствует скорее вторая
источник

CD

Constantine Drozdov in supapro.cxx
Так что предлагаю переименовать первый operator << в какое-то другое имя
источник

AZ

Aleksander Zholtkovs... in supapro.cxx
понятно. Идея была крайне неудачная.
Пойду переделывать.
источник

CD

Constantine Drozdov in supapro.cxx
Aleksander Zholtkovskii
понятно. Идея была крайне неудачная.
Пойду переделывать.
тут вопрос, что вы хотите
чередовать вывод {} и перечисление содержимого в json это явно две разные функции
источник

AZ

Aleksander Zholtkovs... in supapro.cxx
Constantine Drozdov
тут вопрос, что вы хотите
чередовать вывод {} и перечисление содержимого в json это явно две разные функции
хочу свой аналог std::cout. Предельно минималистичный. Сводящийся к вызовам функции типа dbg_out(const char* data, size_t len).
источник

CD

Constantine Drozdov in supapro.cxx
Aleksander Zholtkovskii
хочу свой аналог std::cout. Предельно минималистичный. Сводящийся к вызовам функции типа dbg_out(const char* data, size_t len).
источник

CD

Constantine Drozdov in supapro.cxx
там нет никакой шаблонности, << определяет только запись примитивов и кладет на rhs задачу представить себя примитивами
источник

AZ

Aleksander Zholtkovs... in supapro.cxx
добавление
#include <iostream>
настолько раздувает прошивку, что она никуда не влезает.
источник

CD

Constantine Drozdov in supapro.cxx
Aleksander Zholtkovskii
добавление
#include <iostream>
настолько раздувает прошивку, что она никуда не влезает.
дело не в этом, посмотрите внимательно сигнатуры
источник

CD

Constantine Drozdov in supapro.cxx
Aleksander Zholtkovskii
добавление
#include <iostream>
настолько раздувает прошивку, что она никуда не влезает.
как только вы напишете
struct myout {
  template <typename T> operator << (T) requires(IsSomeVeryPrimitiveType<T>) {
   }
};
у вас уже не будет проблемы в overload resolution
что вы не можете - это реализовать myout, перенаправляющий любой вывод на cout без указанного requires, класс потока не может определять способ вывода непримитивного объекта
источник

C

CodeDetector in supapro.cxx
Constantine Drozdov
как только вы напишете
struct myout {
  template <typename T> operator << (T) requires(IsSomeVeryPrimitiveType<T>) {
   }
};
у вас уже не будет проблемы в overload resolution
что вы не можете - это реализовать myout, перенаправляющий любой вывод на cout без указанного requires, класс потока не может определять способ вывода непримитивного объекта
Оберните код в теги: 3 символа ` до и после кода (в случае одиночной конструкции достаточно 1 ` с обеих сторон). Спасибо!
источник