Was ist das Ergebnis von decltype ("Hallo")?
Ich erhalte unerwartete Ergebnisse von allen Compilern, auf denen ich Folgendes ausprobiert habe (GCC 4.7.2, GCC 4.8.0 Beta, ICC 13.0.1, Clang 3.2, VC10):
#include <type_traits>
int main()
{
// This will fire
static_assert(
std::is_same<decltype("Hello"), char const[6]>::value,
"Error!"
);
}
Ich hätte die Kompilierungszeit Behauptung oben erwartetnicht zu schießen, aber es tut. Immerhin tut dies nicht (wie erwartet):
#include <type_traits>
int main()
{
char const hello[6] = "Hello";
// This will not fire
static_assert(
std::is_same<decltype(hello), char const[6]>::value,
"Error!"
);
}
Also, was ist das Ergebnis vondecltype("Hello")
nach dem C ++ 11 Standard (Referenzen werden sehr geschätzt)? Womit sollte ich es vergleichen, damit die obige Behauptung zur Kompilierungszeit nicht ausgelöst wird?