C++ 模板typename作为同一模板的其他参数的类型
我想创建一个模板,在这里我可以使用不同的向量类型,以及一个常量作为相同类型的向量。 我希望能够将常量作为模板参数传递,以便让编译器优化它,而无需显式专门化 所以我尝试重新使用类型参数,但得到了非法的类型C++ 模板typename作为同一模板的其他参数的类型,c++,templates,C++,Templates,我想创建一个模板,在这里我可以使用不同的向量类型,以及一个常量作为相同类型的向量。 我希望能够将常量作为模板参数传递,以便让编译器优化它,而无需显式专门化 所以我尝试重新使用类型参数,但得到了非法的类型 #include <vector> using namespace std; template<typename WEIGHT, WEIGHT multiplier> void test_multipier(vector<WEIGHT> &v) {
#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;
}
#包括
使用名称空间std;
模板
无效测试(向量和v)
{
uint16_t num=16;
/*...*/
权重w=乘数*(num);
v、 推回(w);
}
int main()
{
向量测试;
测试向量;
//^^错误C2993“double”:非类型模板参数“乘数”的类型非法
返回0;
}
复制自:
[非类型模板参数的类型]是以下类型之一(可选cv限定,忽略限定符):
(从C++11开始)李>std::nullptr\u t
- 积分型李>
- 左值引用类型(对象或函数)李>
- 指针类型(指向对象或函数)李>
- 指向成员类型的指针(指向成员对象或成员函数)李>
- 枚举类型
double
不能用作非类型模板参数。非类型模板参数不能为浮点类型。将其作为第二个参数传递。重复: