我正在尝试使用constexpr构造函数从模板类派生类,该类具有constexpr构造函数。派生类仅定义构造函数。我收到了这个错误...
main.h
template <class T>
class ExprTemplate
{
public:
const T a;
constexpr ExprTemplate (const T in):a(in){}
constexpr T GetA() const {return a;}
};
class DelivExpr : public ExprTemplate<int>
{
public:
constexpr DelivExpr(const int in): ExprTemplate<int> (in){}
};
template <int n>
struct constN
{
constN() {i = n;}
uint32_t i;
};
main.cpp
int main()
{
constN < 1 > e0;//OK
constN < (ExprTemplate<int>(0)).GetA() > e1;//OK
constN < (DelivExpr(0)).GetA() > e2;
//error, function call must have a constant value in a constant expression
constexpr DelivExpr deliv(0);
constN < deliv.GetA() > e3;//OK!!!
}
有人可以帮忙吗?)