Подтвердить что ты не робот

Когда нужно установить конструктор как constexpr?

Я знаю, что С++ 11 позволяет указывать выражения для времени компиляции, а не времени выполнения, используя constexpr.

Я знаю, что это может быть сделано и для конструктора класса. Однако этот конструктор должен инициализировать все члены класса, чтобы использоваться как constexpr (во время компиляции), а любые функции, которые он вызывает, также должны быть помечены как constexpr.

Но когда вы установили его конструктор в constexpr, и есть ли другие преимущества, кроме небольшой оптимизации?

Будет ли это означать, что если я МОЖЕТ, я должен ВСЕГДА установить мой конструктор как constexpr?

4b9b3361

Ответ 1

Создав конструктор constexpr, вы разрешаете пользователям создавать объекты constexpr и использовать их в своих собственных постоянных выражениях. Это делает класс более дружественным в некоторых случаях; например, при программировании встроенной системы, где вы хотите поместить данные в постоянную память, если это возможно.

Итак, с точки зрения того, чтобы класс был гибким и, как правило, полезным, вы должны сделать это, если сможете.