/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <iostream>
#include <utility>
using namespace std;
template<size_t... Idx, size_t s>
void foo(index_sequence<Idx..., s>) {
cout << s << endl;
}
template<typename T>
struct TypeIdentity {
using Type = T;
};
template<typename T>
using Identity = typename TypeIdentity<T>::Type;
template<typename... Idx, size_t s>
void bar(index_sequence<Identity<Idx>{}..., s>) {
cout << s << endl;
}
template<size_t s>
void baz(index_sequence<0, s>) {
cout << s << endl;
}
template<size_t... Idx>
struct Qux {
template<size_t s>
static void qux(index_sequence<Idx..., s>) {
cout << s << endl;
}
};
int main()
{
foo<0>(make_index_sequence<2>{}); // couldn't deduce template parameter āsā
bar<integral_constant<size_t, 0>>(make_index_sequence<2>{}); // couldn't deduce template parameter āsā
baz(make_index_sequence<2>{});
Qux<0>::template qux(make_index_sequence<2>{});
return 0;
}