実行時に値をラップするだけのクラスを考えてみましょう:
template <typename Type>
class NonConstValue
{
public:
NonConstValue(const Type& val) : _value(val) {;}
Type get() const {return _value;}
void set(const Type& val) const {_value = val;}
protected:
Type _value;
};
そしてその constexpr バージョン:
template <typename Type>
class ConstValue
{
public:
constexpr ConstValue(const Type& val) : _value(val) {;}
constexpr Type get() const {return _value;}
protected:
const Type _value;
};
質問 1: constexpr バージョンが正しい方法で設計されていることを確認できますか?
質問 2: 両方のクラスを、構築または実行時に構築でき、実行時またはコンパイル時に値を持つことValue
ができる単一のクラスにどのように混合しますか?constexpr
get()
編集: 質問 3:ファイルでget()
定義されている場合、関数の正しい宣言ではない場合にインライン化する場合は? それは...ですか.cpp
get()
constexpr
constexpr inline Type get();
また
inline constexpr Type get()
または、他の何か ?