0
我想创建一个模板,我可以使用不同的矢量类型,并将一个常量作为相同类型的向量。 我希望能够传递常量作为模板参数,以便让编译器优化它,而不需要明确的专门化。模板typename作为同一模板的其他参数的类型
所以我试图重新使用类型参数,但我有非法类型。
#include <vector>
using namespace std;
template<typename WEIGHT, WEIGHT multiplier>
void test_multipier(vector<WEIGHT> &v)
{
uint16_t num = 16;
/*...*/
WEIGHT w = multiplier* (num);
v.push_back(w);
}
int main()
{
vector<double> test_vector;
test_multipier<double,0.01>(test_vector);
//^^ Error C2993 'double': illegal type for non-type template parameter 'multiplier'
return 0;
}
非类型模板参数不能是浮点类型。相反,将其作为第二个参数传递。 – 0x499602D2
Duplicate:http://stackoverflow.com/questions/5687540/non-type-template-parameters –