Use decltype() instead of typeof() when building with C++0x support

When building with C++0x, GCC's typeof() extension is not available
and decltype() should be used instead.

decltype() returns a reference for lvalues, which needs to
be removed for consistency with how typeof() used to behave.

MD-19353
Fix build failure under C++11 due to missing space between string literal and identifier

C++11 requires a space between literals and identifiers.

MD-19353