Skip to content

Instantly share code, notes, and snippets.

#include <tuple>
#include <type_traits>
using std::tuple;
template <int n>
struct int_: std::integral_constant<int, n> { };
typedef int_<0> zero_;
template <typename l>
struct decrement: int_<l::value-1> {
#include <array>
#include <type_traits>
template <typename U, typename ...Args>
struct make_array_impl_ {
template <typename T, typename Void, typename NonVoid>
struct if_void_else { typedef NonVoid type; };
template <typename Void, typename NonVoid>
struct if_void_else<void, Void, NonVoid> { typedef Void type; };
template <typename T = void, typename ElemT = typename if_void_else<T, U, T>::type >