Константы времени компиляции и типы в один Variadic Template

97
03 августа 2019, 15:50

Есть следующая функция:

template <???>
void foo();

Существует ли способ определить ее так, чтобы была возможность вызвать ее, например, следующим образом:

foo<5.0f, int, 0, double, float, 6>();

То есть передавать в нее как константы времени компиляции, так и типы в любом количестве и любой последовательности, и конечно же иметь ко всему этому доступ в определении функции.

Answer 1

Значения плавающих типов не могут выступать в качестве параметров шаблонов. В остальных случаях можно завернуть константы в тип 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>>();    
} 
READ ALSO
Что означает знак &ldquo;&amp;&rdquo; в этой строке?

Что означает знак “&” в этой строке?

Что означает знак "&" в этой строке?

140
Разбить файлы на архивы

Разбить файлы на архивы

Необходимо разбить большое количество файлов на архивыНо неизвестно, сколько их может быть

121
проблемы java hibernate

проблемы java hibernate

первый раз делаю hibernate возникла ошибкаВ java новичок подскажите куда копать

122