Podczas korzystania decltype
wokół nazw, można napisać kod, który kompiluje, ale stwierdzenie wydaje się nie mieć żadnego wpływu pod g ++ 4.9.1, pod brzękiem produkuje error: unexpected namespace name 'std': expected expression
Czy decltype (std) jest legalne i czy ma jakiś cel?
Na przykład, następujący wszystko skompiluj pod g ++, ale zestaw nie pokazuje żadnego wygenerowanego dla nich kodu.
using s = decltype(std);
auto n = typeid(decltype(std)).name();
auto sz = n.size();
std::printf("size is %zu\n", sz+1);
std::printf("this type is: %s\n\n", n.c_str());
// the only limit is your imagination
int f();
std::ostream trash = f(typeid(decltype(std)) * 10 - 6^typeid(decltype(std)));
Jeśli g ++ ma rację, dopuszczając to? Jeśli tak, to jaka jest zaleta tego, że kod znika, zamiast powodować błąd podczas kompilacji?
Wydaje się, że jest to błąd w g ++. – Borgleader