MGL 共通プリプロセッサマクロ
Contents
MGL共通プリプロセッサマクロ#
概要#
MGLが定義するプリプロセッサマクロのうち、共通で使用される宣言と定義です。
プリプロセッサマクロ#
名前 |
内容 |
バージョン |
---|---|---|
環境に応じて |
1.1.14+ |
MGL_MAYBE_CONSTEXPR#
宣言#
#if __cplusplus >= 202302L
#define MGL_MAYBE_CONSTEXPR constexpr
#else
#define MGL_MAYBE_CONSTEXPR
#endif
説明#
環境に応じてconstexpr
となるマクロの定義です。
C++23以降の環境では標準ライブラリの多くにconstexpr
が付与された事、定数式化の制限が緩和された事などの理由により、より多くの関数を定数式にできるようになりました。一方で、MGLはC++17に準拠しているために定数式にできない関数が多数あり、それらがC++23以降の環境においてネックとなる場合がありました。
この問題を解決するため、MGLではC++23以降であれば定数式にできる関数に対してconstexpr
の代わりにMGL_MAYBE_CONSTEXPR
を付与しています。
C++20までの環境においては、このマクロは空となり何の効力も持ちません。
注釈
MGL 1.1.4までにも同名のマクロが存在しており、これはMSVCとClangの定数式化の際を埋める目的で用いられていました。
バージョン情報#
- MGL 1.1.14
C++23以降とそれ以前の差異を埋める目的で再リリース
- MGL 1.1.5
一旦廃止
- MGL 1.0.0
MSVCとClangの差異を埋める目的でリリース