Когда нужно установить конструктор как constexpr?
Я знаю, что С++ 11 позволяет указывать выражения для времени компиляции, а не времени выполнения, используя constexpr.
Я знаю, что это может быть сделано и для конструктора класса.
Однако этот конструктор должен инициализировать все члены класса, чтобы использоваться как constexpr (во время компиляции), а любые функции, которые он вызывает, также должны быть помечены как constexpr.
Но когда вы установили его конструктор в constexpr, и есть ли другие преимущества, кроме небольшой оптимизации?
Будет ли это означать, что если я МОЖЕТ, я должен ВСЕГДА установить мой конструктор как constexpr?
Ответы
Ответ 1
Создав конструктор constexpr
, вы разрешаете пользователям создавать объекты constexpr
и использовать их в своих собственных постоянных выражениях. Это делает класс более дружественным в некоторых случаях; например, при программировании встроенной системы, где вы хотите поместить данные в постоянную память, если это возможно.
Итак, с точки зрения того, чтобы класс был гибким и, как правило, полезным, вы должны сделать это, если сможете.