Есть следующая функция:
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>>();
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Необходимо разбить большое количество файлов на архивыНо неизвестно, сколько их может быть
первый раз делаю hibernate возникла ошибкаВ java новичок подскажите куда копать