#include <iostream>
using namespace std;

template<typename>
struct de_cay; // undefined

template<size_t N, typename T>
struct de_cay<T[N]> {
	static const size_t size = N;
	using type = T;
};

template<typename T>
struct TypeDefinition;

int main()
{
	TypeDefinition<de_cay<int[5][2]>::type> td;
}