struct A
{
    static const int value = 2;
};
const int A::value;

template <typename T>
struct B
{
    static const int value = sizeof(T);
};
template <typename T>
const int B<T>::value;

#include <iostream>

int main()
{
    std::cout << A::A::A::A::A::A::A::value << '\n';
    std::cout << ( B<char>::B::template B<int>::B::value ) << '\n';
}