мне нужно использовать список элементов одного и того же типа в качестве аргумента шаблона, так что я с помощью вектора, но я не уверен, как сделать эту работуКак кормить векторных элементов в шаблон
#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 if (i == 3) cout << "OK"; '. –
@ H2CO3 что вы имеете в виду? Вы можете скопировать числовое значение, это точно, что перегрузка с '<3>' есть только, чтобы проверить что-то на вызове шаблона. Мне нужно создать числовое значение. – user2485710
@userXXX Я знаю, что вы можете использовать ** целое число ** (не любое число) в качестве аргумента шаблона. Однако не переменная, а только константа времени компиляции. Я говорю, что я не вижу необходимости в шаблоне. Это может быть проблемой XY. –