Следует ли использовать constexpr везде, где мы можем?

Очевидно, мы не можем сделать все constexpr . А если ничего не делать constexpr , то больших проблем не будет. Пока много кода написано без него.

Но стоит ли вставлять constexpr во что-нибудь, что может иметь его? Есть ли здесь потенциальная проблема?

25
задан R. Martinho Fernandes 24 August 2011 в 02:23
поделиться

1 ответ

Я склонен соглашаться с Scott Meyers на этом (что касается большинства вещей): "Используйте constexpr каждый раз, когда возможный" (от Объекта 15 из Эффективный современный C++ ), особенно при обеспечении API для других для использования. Может быть действительно неутешительно, когда Вы хотите выполнить инициализацию времени компиляции с помощью функции, но не можете, потому что библиотека не объявила это constexpr. Кроме того, все классы и функции являются частью API, используемый ли миром или просто Вашей командой. Так используйте его каждый раз, когда Вы можете, для расширения его объема использования.

// Free cup of coffee to the API author, for using constexpr
// on Rect3 ctor, Point3 ctor, and Point3::operator*
constexpr Rect3 IdealSensorBounds = Rect3(Point3::Zero, MaxSensorRange * 0.8);

Тем не менее constexpr часть интерфейса, поэтому если интерфейс естественно не соответствует чему-то, что может быть constexpr, не соглашайтесь на него, чтобы Вы не должны повреждать API позже. Таким образом, не фиксируйте constexpr интерфейсу просто, потому что ток, только реализация может обработать его.

0
ответ дан 28 November 2019 в 21:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: