Re: Тема constexpr в классах
От: rg45 СССР  
Дата: 05.04.26 08:28
Оценка: 15 (1)
Здравствуйте, LaptevVV, Вы писали:

LVV>Я, конечно, видал разные примеры.

LVV>Но вот какой самый примитивный и простой пример можно придумать?
LVV>Чтоб без этого вот динамического выделения памяти во время компиляции ?
LVV>С конкретными классами (как Страуструп их обзывает) чего-то в голову ничего не приходит...

1) Любой класс стандатной библиотеки, содержащий статический constexpr член value: is_const, is_pointer, is_object, is_function, is_reference, integral_constant и множество других.

Кстати std::integral_constant допускает использование не только с интегральными типами, но и с любыми типами, объекты которых могут быть использованы как нешаблонные параметры шаблонов, например:

template <auto V> struct Constant : std::integral_constant<decltype(V), V>{};

using pi = Constant<3.14159265359>;
using master_version = Constant<std::array<int, 4>{3,0}>;

struct A {int id{}, double value {};};
using foo = Constant<A{.id = 42, .value = 3.14}>;



2) Конструкторы и функции члены многих классов стандартной библиотеки объявлены constexpr, что позволяет использовать объекты этих классов во время компиляции, например:

static_assert(std::string("12345").size() == 5);


Или я не уловил суть вопроса.
--
Справедливость выше закона. А человечность выше справедливости.
Отредактировано 05.04.2026 9:08 rg45 . Предыдущая версия . Еще …
Отредактировано 05.04.2026 8:59 rg45 . Предыдущая версия .
Отредактировано 05.04.2026 8:50 rg45 . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.