I encountered this recently but could not figure out why the language would allow b = c; below and fail b = {3, 4}. Is there an issue with allowing the latter ?
Because that's the definition of the language... I don't think there is any particular reason other than "it makes it harder to write the compiler to allow for this".
You could do b = T{3, 4} if you have a C++ 11 compiler.