Consider the following program:
template struct A { using X = typename T::X; }; template ::X* = nullptr> void