std::arrayってなんらかのusingであることが(コンパイラ側への制限として)許されてたりするんか?

もしarrayの実体がこんな実装だったら
namespase std::__internal {
template<class T, size_t>class array{...};
}
namespase std:: {
template<class T, size_t>using array=__internal<T,size>;
}

勝手にこれ書いたらまずくならんか?
namespase std{
template<class T, size_t>class array;
}