Я получаю неожиданные результаты от всех компиляторов, на которых я пробовал следующее (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!"
);
}
Я бы ожидал, что утверждение времени компиляции не должно срабатывать, но это так. В конце концов, этого нет (как и ожидалось):
#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!"
);
}
Итак, каков результат decltype("Hello")
в соответствии со стандартом С++ 11 (ссылки высоко ценятся)? Что я должен сравнивать с тем, чтобы не было выполнено утверждение времени компиляции?