One of the most interesting grammars of any programming languages. Three
Three of these things belong together, and one istwo are something altogether different...
SomeType t = u; SomeType t(u); SomeType t(); SomeType t; SomeType t(SomeType(u)); All but the third oneand fifth define a SomeType object on the stack and initialize it (with u in the first two case, and the default constructor in the fourth. The third one is actually declaring a function that takes no parameters and returns a SomeType. The fifth is similarly declaring a function that takes one parameter by value of type SomeType named u.