Essentially if you miss out the <...> anywhere it should be the compiler treats your code as legacy and does not do much of the normal type checking it should. MOst compilers try their best but it leaves gaping holes in the checking process.