我需要,所以我使用矢量使用相同類型作爲模板參數的元素列表,但我不知道如何使這項工作如何養活矢量元素模板
#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