Информация об изменениях

Сообщение Re[4]: Вопрос целесообразности обобщения от 15.07.2023 12:42

Изменено 15.07.2023 12:43 Sm0ke

Re[4]: Вопрос целесообразности обобщения
Здравствуйте, sergii.p, Вы писали:

SP>Здравствуйте, Sm0ke, Вы писали:


S>>Вот бы можно было так без auto :


S>>
S>>[my_map::iterator it, bool was_added] = v_map.try_emplace(v_key, v_arg);
S>>


SP>что за язык? Такое на С++ не компилируется.


Я же написал, что мне хотелось бы, чтобы добавили в стандарт такую возможность.
Чтобы можно было использовать structural binding не через auto, а с конкретными типами)

S>>Вот тут как раз можно бы и обобщить. Такая обёртка подошла бы не только для строк. Назвать к примеру wrap, и добавить как параметр шаблона хранимый тип.

S>>Но мне кажется, что на этот случай наверняка должно быть уже готовое решение.

SP>"обобщить" это не про С++ Для целочисленных значений есть давно известная идиома в виде enum class. А для других типов каждый изгаляется как может. Есть к примеру макрос BOOST_STRONG_TYPEDEF. Но честно говоря ради пары десятков строчек заводить зависимость от буста не многим по душе. Может было бы неплохо если бы в языке расширили идиому enum class. Не знаю насколько оно реализуемо. Но вот было бы что-то такое


SP>
SP>enum class ModuleName : std::string { Invalid = "" };
SP>


SP>и жизнь заиграла бы новыми красками


В php ввели enum трёх типов: общие, целочисленные и текстовые. Так что там это можно)
https://www.php.net/manual/en/language.enumerations.backed.php
Re[4]: Вопрос целесообразности обобщения
Здравствуйте, sergii.p, Вы писали:

SP>Здравствуйте, Sm0ke, Вы писали:


S>>Вот бы можно было так без auto :


S>>
S>>[my_map::iterator it, bool was_added] = v_map.try_emplace(v_key, v_arg);
S>>


SP>что за язык? Такое на С++ не компилируется.


Я же написал, что мне хотелось бы, чтобы добавили в стандарт такую возможность.
Чтобы можно было использовать Structured binding не через auto, а с конкретными типами)

S>>Вот тут как раз можно бы и обобщить. Такая обёртка подошла бы не только для строк. Назвать к примеру wrap, и добавить как параметр шаблона хранимый тип.

S>>Но мне кажется, что на этот случай наверняка должно быть уже готовое решение.

SP>"обобщить" это не про С++ Для целочисленных значений есть давно известная идиома в виде enum class. А для других типов каждый изгаляется как может. Есть к примеру макрос BOOST_STRONG_TYPEDEF. Но честно говоря ради пары десятков строчек заводить зависимость от буста не многим по душе. Может было бы неплохо если бы в языке расширили идиому enum class. Не знаю насколько оно реализуемо. Но вот было бы что-то такое


SP>
SP>enum class ModuleName : std::string { Invalid = "" };
SP>


SP>и жизнь заиграла бы новыми красками


В php ввели enum трёх типов: общие, целочисленные и текстовые. Так что там это можно)
https://www.php.net/manual/en/language.enumerations.backed.php