编译器在以下代码片段中抱怨,它说cx
不是常量表达式。由于cx
不是常量,因此将其作为函数T()
的模板参数传递是无效的。但是,getFoo()
不是const函数吗?因此不是x
const而是cx
const?即使x
不是,cx
是不是强制const为const标识符?
如何使cx
const成功传递为T()
的有效模板参数?
//M is an instance of class C
unsigned int x = M.getFoo(); //isn't this supposedly be constant?
const unsigned int cx = x;
C<cx> Mt = M.T<cx>();
调用C类的以下2个公共成员函数:
const int getFoo() const{
return foo; //a private variable which value is set in the constructor
}
<template unsigned int ROWS>
const C<ROWS> T() const{
//after some declarations and computations...
return Ct;
}