#include <iostream>
#include <array>

template<class T>
struct A{
    constexpr static int value=0;
};

template<template<typename>class T,typename...Args>
struct A<T<Args...>>
{
    constexpr static int value=1;
};

template<template<typename>class T,typename...Args>
struct A<T<Args...> const>
{//const container used for type of  return arguments
    constexpr static int value=2;
};

int main()
{
    using Type=const std::array<int,10>;
    std::cout<<A<Type>::value;
}
