template <typename...>
struct Seq;

template <typename>
struct always_false
{
	static constexpr bool value = false;
};

template <typename, typename = void>
struct car;

template <typename head, typename... tail, typename dummy>
struct car<Seq<head, tail...>, dummy>
{
	typedef head type;
};

template <typename dummy>
struct car<Seq<>, dummy>
{
	static_assert(always_false<dummy>::value, "car of empty Seq");
};

#include <iostream>
#include <typeinfo>

int main()
{
	car<Seq<>> error;
}