namespace std {
template <class T, std::size_t N>
struct array;
}

みたいに標準ライブラリの前方宣言を自作のヘッダに書くのってやっぱり未定義動作なんですかね?