Я пытаюсь понять приведенный ниже пример, но меня немного смущают три различных объявления шаблона и структуры.
Не могли бы вы описать, что произойдет для звонка ниже? какой из шаблонов будет использоваться и когда?
Кроме того, почему в первом объявлении шаблона + класса отсутствует " <S...>
" сразу после объявления структуры? (Посмотрите, что закомментировано)? когда это правильно добавить, а когда нет?
#include <iostream>
#include <stdio.h>
using namespace std;
template<typename... S>
struct Example /* <S...> */ ;
template<typename H, typename... T>
struct Example<H, T...>
{
static const size_t value = sizeof(H) + Example<T...>::value;
};
template<>
struct Example<>
{
static const size_t value = 0;
};
int main(){
cout << Example<long, int, char>::value << endl;
return 0;
}
Выход: 13