考虑一个只在运行时包装一个值的类:
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()
或者是其他东西 ?