Здравствуйте, vsb, Вы писали:
vsb>Кстати STL далеко не самое ужасное, что есть в C++.
STL это не в С++, это для С++. Никто им пользоваться не заставляет.
vsb>Больше всего меня ужасает ввод-вывод. Это же надо догадаться было — перегрузить операторы битового сдвига. Какая-то шизофрения.
А этим извращением разве кто то всё ещё пользуется?
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, CreatorCray, Вы писали:
vsb>>Кстати STL далеко не самое ужасное, что есть в C++. CC>STL это не в С++, это для С++. Никто им пользоваться не заставляет.
С момента фиксации STL в стандарте это C++.
CC>А этим извращением разве кто то всё ещё пользуется?
Да. За пределами яблочного ядра есть жизнь. А у вас нет прерогативы на единственно правильное мнение.
Здравствуйте, CreatorCray, Вы писали:
S>>PS. Неужели проще самому бабахаться с UTF-8, нежели воспользоваться ICU? CC>Ты не поверишь но да!
Поверю, сам простую работу с UTF-8 реализовывал. Но там на уровне проверки корректности последовательности или трансляции из UCS-16 в UTF-8 на Windows.
Если же нужно, например, регистронезависимую сортировку сделать, то лучше уж ICU задействовать.
Здравствуйте, CreatorCray, Вы писали:
S>>это был прям таки прорыв. CC>Разишо канализации.
Интересно было бы послушать, как можно было бы сделать в 1980-х вывод произвольных пользовательских типов без перегрузки операторов, с сохранением безопасности по типам.
Всё ещё мрак и кошмар.
S>Во-первых, примеры не эквивалентны. Вариант с printf-ом требует еще одну строчку с вызовом fflush.
Это зависит от того что именно стоит за printf.
То, что в дефолтном рантайме лучше не использовать, ибо оно Сишное, а потому сильно ограниченное.
Речь скорее за printf-like синтаксис вывода.
S>Во-вторых, давайте пройдемся по тонкому льду:
С появлением вариадиков я вообще могу написать вот такое:
crprintf (L"%s %f %i", 0.5, 123, -PI);
И оно напечатает "0.5 123 -3"
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, so5team, Вы писали:
S>Интересно было бы послушать, как можно было бы сделать в 1980-х вывод произвольных пользовательских типов без перегрузки операторов, с сохранением безопасности по типам.
В плюсах можно было. Я делал типобезопасный printf-like вывод через использование оператора запятая.
С появлением вариадиков тут же переписал на них, стало на порядок удобнее.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, so5team, Вы писали:
S>С момента фиксации STL в стандарте это C++.
Всё, что может быть полностью написано на С++ не является частью языка.
Что бы там себе теоретики не фантазировали.
CC>>А этим извращением разве кто то всё ещё пользуется? S>Да. За пределами яблочного ядра есть жизнь.
Выдыхай, бобёр! Хочешь пользоваться отвратительно спроектированным интерфейсом — ветер в спину.
S> А у вас нет прерогативы на единственно правильное мнение.
У меня есть прерогатива на собственный опыт, от ядер до финансового софта.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
vsb>Это от наличия опыта. И наличия опыта работы с библиотеками в других языках. Кстати STL далеко не самое ужасное, что есть в C++. Больше всего меня ужасает ввод-вывод. Это же надо догадаться было — перегрузить операторы битового сдвига. Какая-то шизофрения.
Это ты valarray еще не трогал.
Тем не менее, это можно было сделать еще в "Си с классами".
S>>Во-первых, примеры не эквивалентны. Вариант с printf-ом требует еще одну строчку с вызовом fflush. CC>Это зависит от того что именно стоит за printf.
Речь про сишный printf (fprintf, sprintf).
CC>С появлением вариадиков я вообще могу написать вот такое: CC>
CC>crprintf (L"%s %f %i", 0.5, 123, -PI);
CC>
CC>И оно напечатает "0.5 123 -3"
Во-первых, речь не про вариадики.
Во-вторых, как с помощью мифического crprintf вывести объект собственного типа?
Здравствуйте, CreatorCray, Вы писали:
S>>Интересно было бы послушать, как можно было бы сделать в 1980-х вывод произвольных пользовательских типов без перегрузки операторов, с сохранением безопасности по типам. CC>В плюсах можно было.
Давайте конкретнее: как?
CC>Я делал типобезопасный printf-like вывод через использование оператора запятая.
Объекты пользовательских типов посредством чего выводились?
CRT>>Для выводы обычных строк, символов, чисел printf удобней S>Расскажите эту байку кому-нибудь помоложе.
Те кто помоложе часто любят совать пальцы в розетки, когда взрослеют, то понимают, что не нужно это делать.
Здравствуйте, CreatorCray, Вы писали:
S>>С момента фиксации STL в стандарте это C++. CC>Всё, что может быть полностью написано на С++ не является частью языка. CC>Что бы там себе теоретики не фантазировали.
Частью языка является то, что зафиксировано в стандарте.
Чтобы там практики с "прерогативой на собственный опыт" не фантазировали.
CC>>>А этим извращением разве кто то всё ещё пользуется? S>>Да. За пределами яблочного ядра есть жизнь. CC>Выдыхай, бобёр! Хочешь пользоваться отвратительно спроектированным интерфейсом — ветер в спину.
Предложите лучше.
А да, у вас же есть мега альтернатива fmtlib, которую никто никогда не увидит.
S>> А у вас нет прерогативы на единственно правильное мнение. CC>У меня есть прерогатива на собственный опыт, от ядер до финансового софта.
Если включить мозги (хотя мозги вряд ли могли бы позволить ЧСВ раздуться до такого уровня), то можно увидеть, что ваш опыт у вас никто не отнимает, а вот над желанием высказать единственно правильное мнение скоро будут откровенно стебаться.
Здравствуйте, so5team, Вы писали:
CC>>С появлением вариадиков я вообще могу написать вот такое: CC>>
CC>>crprintf (L"%s %f %i", 0.5, 123, -PI);
CC>>
CC>>И оно напечатает "0.5 123 -3"
Кстати говоря, за то, что дабл выводится там, где требуется строка, а вещественное значение неявно преобразуется к целому (да и наоборот), руки нужно отрывать. Подобные вещи должны приводить к ошибкам, желательно времени компиляции.
Здравствуйте, so5team, Вы писали:
S>Тем не менее, это можно было сделать еще в "Си с классами".
Можно было сделать удобнее.
S>Речь про сишный printf (fprintf, sprintf).
А зачем в плюсах упорно продолжать пользоваться сишными функциями?
S>Во-первых, речь не про вариадики.
Речь про С++, в котором уже давно есть вариадики.
S>Во-вторых, как с помощью мифического crprintf вывести объект собственного типа?
А где в исходнои примере ("std::cout << "0x" << std::hex << std::setfill('0') << std::setw(4) << 0x424 << std::endl;") объект собственного типа?
Впрочем если припрёт то всё что надо это определить функцию в namespace которая будет принимать контекст и const& на нужный тип и внутри сама форматировать его в строку.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока
Здравствуйте, so5team, Вы писали:
S>>>Интересно было бы послушать, как можно было бы сделать в 1980-х вывод произвольных пользовательских типов без перегрузки операторов, с сохранением безопасности по типам. CC>>В плюсах можно было.
S>Давайте конкретнее: как?
Да так же. Просто не через operator<<
S>Объекты пользовательских типов посредством чего выводились?
Мне юзерская расширяемость нафиг не надо была, задача была полностью заменить printf. Впрочем любой новый тип добавляется туда элементарно.
... << RSDN@Home 1.3.110 alpha 5 rev. 62>>
Забанили по IP, значит пора закрыть эту страницу.
Всем пока