Forward declarations. Can typedefs have forward declarations? Should we allow this? Rather not. “I'm declaring this typedef's name, but it's definition will be bound later...” Beware of typedef cycles!
Can typedefs have external linkage? Can cycles form? But what class of type is it: channel, process? e.g. extern typedef foo;
extern template <...> typedef foo;
extern typedef old new;
Linkage. See Linkage.
Q: Should typedefs ever be templatable with relaxed arguments? A: Maybe only if we guarantee that strict arguments don't ever depend on (escape to) relaxed parameters.