Size: a a a

2021 March 01

АР

Андрей Руссков... in pro.cxx
единственное чего не хватает - того самого is_transparent и мне не совсем понятно почему его нет
источник

АР

Андрей Руссков... in pro.cxx
хотя иной раз взглянешь на код и понимаешь почему так может быть
источник

АР

Андрей Руссков... in pro.cxx
вообще имо надо unordered_* депрекейтить и делать нормальные std::hash_* контейнеры, с ослабленными гарантиями и (соответственно) значительно более высоким перфом
источник

D

Danya in pro.cxx
Андрей Руссков
вообще имо надо unordered_* депрекейтить и делать нормальные std::hash_* контейнеры, с ослабленными гарантиями и (соответственно) значительно более высоким перфом
А ещё regex депрекейтнуть))
источник

W

Wild_Wind in pro.cxx
Андрей Руссков
В теории можно было бы просто сделать так:
template <class T>
using std::hash<std::string<T>> = std::hash<std::basic_string<T>>;
ведь по стандарту всё равно гарантируется их эквивалентность, а прием по ссылке и по string_view не то чтобы сильно отличается с точки зрения перфа
А если у меня ембеддед и свой класс строки, использующий adt, а не исключения, то что мне делать? Страдать? Или опять перерисывать половину stl?
Нет уж. По нормальному - это действительно шаблонная библиотека. Где std::string не захордкорен, и можно положить то, что надо.
источник

АР

Андрей Руссков... in pro.cxx
у тебя тогда будет не std::hash<std::string> а std::hash<adt::string>...
источник

W

Wild_Wind in pro.cxx
Андрей Руссков
у тебя тогда будет не std::hash<std::string> а std::hash<adt::string>...
А кто мне даст залезть внутрь std?
источник

W

Wild_Wind in pro.cxx
Wild_Wind
А кто мне даст залезть внутрь std?
А, точно, это же хеш. Сорян. Не увидел.
источник

АР

Андрей Руссков... in pro.cxx
стандарт вообще-то позволяет писать специализации некоторых функций для пользовательских классов
источник

W

Wild_Wind in pro.cxx
Но все же, пусть и не тут, но захордкоренные типы в std порой напрягают.
источник

АР

Андрей Руссков... in pro.cxx
ну тут опять же надо смотреть что за типы. Стандарт позволяет добавлять в пространство имен std не так уж и много определений. Навскидку hash, make_error_code, всякие less/greater и пр.
источник

АР

Андрей Руссков... in pro.cxx
все остальное - UB
источник

АР

Андрей Руссков... in pro.cxx
даже учитывая что его шансы выстрелить микроскопические
источник

W

Wild_Wind in pro.cxx
Андрей Руссков
ну тут опять же надо смотреть что за типы. Стандарт позволяет добавлять в пространство имен std не так уж и много определений. Навскидку hash, make_error_code, всякие less/greater и пр.
Вот и я о том же.
Надо до конца раскурить, как это лучше реализовать и накорябать проползал.
А то очень неудобно, что стандартная библиотека шаблонов, недостаточно шаблонная.
источник

АР

Андрей Руссков... in pro.cxx
ну как правило можно не в std пихать а через adl еще
источник

W

Wild_Wind in pro.cxx
Андрей Руссков
ну как правило можно не в std пихать а через adl еще
И как мне через adl объяснить std::format, что я хочу использовать свою строку с своим способом обработки ошибок и иными свистоперделками?
А он принимает лишь std::string_view. И все. И я пошел писать свой std::format. Кривой и убогий, зато constexpr и умеющий в нужные типы.
источник

АР

Андрей Руссков... in pro.cxx
format не умеет в constexpr string_view?
источник

W

Wild_Wind in pro.cxx
И такое во всей стандартной библиотеке. Которая не подходит, если у тебя нестандартное окружение. А очень жаль.
источник

W

Wild_Wind in pro.cxx
Андрей Руссков
format не умеет в constexpr string_view?
Это лишь пример. Но судя по доке на cppref - нет, я не вижу спецификатора constexpr у format.
источник

АР

Андрей Руссков... in pro.cxx
Wild_Wind
И такое во всей стандартной библиотеке. Которая не подходит, если у тебя нестандартное окружение. А очень жаль.
ну синдром nih привел нас к нынешней винде так что я бы воздержался конечно
источник