9
當使用decltype
圍繞一個命名空間,我可以編寫代碼編譯,但聲明似乎並未有下的g ++ 4.9.1任何影響,下鐺它產生error: unexpected namespace name 'std': expected expression
decltype(std)合法嗎?它有任何用途嗎?
例如,下面的所有在g ++下編譯,但程序集不顯示爲它們生成的任何代碼。
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)));
如果g ++是正確的嗎?如果是這樣,代碼消失的優勢是什麼,而不是導致編譯時錯誤?
看起來像g ++中的bug。 – Borgleader 2014-09-30 15:29:33