Сообщение Re[4]: static_assert в catch секции от 23.12.2024 15:35
Изменено 23.12.2024 15:36 Videoman
Re[4]: static_assert в catch секции
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Нынче считается, что это способствует ясности изложения кода?
А причем тут ясность? Тут необходимость просто:
Иногда в для того, что бы код работал в runtime`е быстро, там приходится использовать низкоуровневые возможности, а constexpr не позволяет такое миксовать. Теперь можно писать код, которые будет работать и в том и в том режиме.
ЕМ>Нынче считается, что это способствует ясности изложения кода?
А причем тут ясность? Тут необходимость просто:
#include <type_traits>
#include <optional>
int func_runtime()
{
// use intrinsics, threads or other staff
throw int();
}
constexpr int func_constexpr() noexcept
{
// no optimization
return 0;
}
constexpr int func() noexcept
{
if (std::is_constant_evaluated())
return func_constexpr();
else {
try {
return func_constexpr();
} catch (...) {
return 0;
}
}
}
int main()
{
constexpr int value1 = func();
int value2 = func();
return value1 + value2;
}
Иногда в для того, что бы код работал в runtime`е быстро, там приходится использовать низкоуровневые возможности, а constexpr не позволяет такое миксовать. Теперь можно писать код, которые будет работать и в том и в том режиме.
Re[4]: static_assert в catch секции
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Нынче считается, что это способствует ясности изложения кода?
А причем тут ясность? Тут необходимость просто:
Иногда в для того, что бы код работал в runtime`е быстро, там приходится использовать низкоуровневые возможности, а constexpr не позволяет такое миксовать. Теперь можно писать код, которые будет работать и в том и в том режиме.
ЕМ>Нынче считается, что это способствует ясности изложения кода?
А причем тут ясность? Тут необходимость просто:
#include <type_traits>
#include <optional>
int func_runtime()
{
// use intrinsics, threads or other staff
throw int();
}
constexpr int func_constexpr() noexcept
{
// no optimization
return 0;
}
constexpr int func() noexcept
{
if (std::is_constant_evaluated())
return func_constexpr();
else {
try {
return func_runtime();
} catch (...) {
return 0;
}
}
}
int main()
{
constexpr int value1 = func();
int value2 = func();
return value1 + value2;
}
Иногда в для того, что бы код работал в runtime`е быстро, там приходится использовать низкоуровневые возможности, а constexpr не позволяет такое миксовать. Теперь можно писать код, которые будет работать и в том и в том режиме.