我需要,所以我使用矢量使用相同类型作为模板参数的元素列表,但我不知道如何使这项工作如何养活矢量元素模板
#include <iostream>
#include <cstdint>
#include <vector>
template <uint8_t VAL>
void foo()
{
std::cout << "__" << std::endl;
};
template <>
void foo<3>()
{
std::cout << "OK" << std::endl;
};
int main()
{
std::vector<uint8_t> v = { 2, 4, 5, 2, 3, 55 };
for (auto &k : v) {
foo<k>();
}
return (0);
}
编译器基本上抱怨k
不是a constant expression
,问题是我不知道如何修改这个使这个工作,我需要一些数据结构来迭代,所以我需要保持向量,我需要一个模板来简化我的生活,所以我看到的越多,我就越感到被困在无限循环中。
不,这不是模板的用例。这是'if(i == 3)cout <<“OK”;'的用例。 – 2013-07-21 06:29:55
@ H2CO3你是什么意思?你可以模拟一个数字值,这是肯定的,'<3>'超载只是为了检查模板调用的某些东西。我需要模板数值。 – user2485710
@userXXX我知道你可以使用** integer **(不是任何数字)作为模板参数。不是一个变量,只有一个编译时常量。我说的是我没有看到模板的必要性。这可能是一个XY问题。 – 2013-07-21 06:35:31