タグ

ブックマーク / qiita.com/saltheads (1)

  • constexprとconstを正しく使い分ける - Qiita

    はじめに これまでconst修飾してきたものには2種類あった、ひとつはROM化可能な値、もうひとつは実行時にしか決まらないがいったん初期化したあとは二度と変更されない値である。C++11以降、前者はconstexprが受け持ち、後者はconstが受け持つことになった。 constexpr指定子は、constexprの制約を満たした変数の定義、関数と関数テンプレートの宣言、staticデータメンバーの宣言に対して使用できる。 2つの区別 constは型修飾子である。const intはint型であるが、初期化したあとは二度と変更されない変数である。C++11以降、constexprが導入されたあとは、constはRAMにしか配置できない変数に対して使う修飾子となった。 constexprは型修飾子ではなく、型指定子である。型を修飾するものでなく、ROM化できる、または、ROM化できる可能性が

    constexprとconstを正しく使い分ける - Qiita
    mangakoji
    mangakoji 2024/01/25
    実にわかりずらい。従来はROM化のためにこそconstを使ってたんだから、constをROM定数にして、実行時定数の方をnow_constみたいな修飾子にすべきだったと思う。なぜこんなことに。
  • 1