Re[2]: Амбигус оператор
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 14.04.25 09:07
Оценка: +1
Здравствуйте, Chorkov, Вы писали:

C>Правильный список типов для перекрывания:

C>https://godbolt.org/z/YrhYcjKaY
C>
C>struct S {
C>    S& operator<<(char              ) { std::cout<<"char              "<<std::endl; return *this; }
C>    S& operator<<(signed char       ) { std::cout<<"signed char       "<<std::endl; return *this; }
C>    S& operator<<(unsigned char     ) { std::cout<<"unsigned char     "<<std::endl; return *this; }
C>    S& operator<<(signed short      ) { std::cout<<"signed short      "<<std::endl; return *this; }
C>    S& operator<<(signed int        ) { std::cout<<"signed int        "<<std::endl; return *this; }
C>    S& operator<<(signed long       ) { std::cout<<"signed long       "<<std::endl; return *this; }
C>    S& operator<<(signed long long  ) { std::cout<<"signed long long  "<<std::endl; return *this; }
C>    S& operator<<(unsigned short    ) { std::cout<<"unsigned short    "<<std::endl; return *this; }
C>    S& operator<<(unsigned int      ) { std::cout<<"unsigned int      "<<std::endl; return *this; }
C>    S& operator<<(unsigned long     ) { std::cout<<"unsigned long     "<<std::endl; return *this; }
C>    S& operator<<(unsigned long long) { std::cout<<"unsigned long long"<<std::endl; return *this; }
C>


C>Суть: типы short и int (char и short, int и long, long и long long) могут иметь одинаковый размер, оставаясь разными типами. Тяжкое наследие Си.

C>Типы с фиксированным размером (std::intXX_t), ссылаются на один из этих типов.
C>Можно представить, что компилятор будет поддерживать какой-то специальный __int64_t, и std::int64_t ссылается на него, но я такого не встречал.

Да, в итоге так и сделал
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.