Есть следующая функция:
template <???>
void foo();
Существует ли способ определить ее так, чтобы была возможность вызвать ее, например, следующим образом:
foo<5.0f, int, 0, double, float, 6>();
То есть передавать в нее как константы времени компиляции, так и типы в любом количестве и любой последовательности, и конечно же иметь ко всему этому доступ в определении функции.
Значения плавающих типов не могут выступать в качестве параметров шаблонов. В остальных случаях можно завернуть константы в тип std::integral_constant
, т.е. свести все к типам
#include <type_traits>
template <typename ...Args>
void foo()
{
}
int main(void)
{
foo<std::integral_constant<int, 5>, int, std::integral_constant<int, 0>,
double, float, std::integral_constant<int, 6>>();
}
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Виртуальный выделенный сервер (VDS) становится отличным выбором
Необходимо разбить большое количество файлов на архивыНо неизвестно, сколько их может быть
первый раз делаю hibernate возникла ошибкаВ java новичок подскажите куда копать