Here is an example of a valid, executable code that would become ambiguous if the type were not specified in the definition of an integer N::X::i , since the use of dis-mixing structs is possible for structures, but there is nothing equivalent, make the definition int X::i do not match a struct according to your suggested syntax.
This is a bit confusing, but the bottom line: without the types mentioned, you can break the material.
Other answers basically come down to consistency with variable definitions that appear in other situations - a desirable but not reliable technical driver to decide on the simplification proposed in the question. Of course, this may not be enough to simplify, or it may be regarded as rather obfuscation, while not allowing a serious consideration of Standardization.
source share