可能重複:通過使用decltype
#include <iostream> struct A { static const int v = 1; }; int main() { A a; std::cout << decltype(a)::v << std::endl; }
將產生下一個編譯錯誤::
C++0x decltype and the scope resolution operator
使用克++ 4.6.1編譯下一個例子
error: expected primary-expression before 'decltype'
error: expected ';' before 'decltype'
這是按照標準嗎?或者,這是g ++的怪癖嗎?
如果您輸入了「A :: v」,它也會讓您免於更多打字:D – 2012-01-28 20:57:51
@ Mr.Anubis:如果它是'std :: map> m ;自動a = m.begin();'....然後將寫入類型名而不是'decltype(a)'是一個儲蓄? –
2012-01-28 21:00:49
@BenVoigt不是真的是一個騙局,我不喜歡這個問題的答案。我的問題的答案是在這個問題 – 2012-01-28 21:01:44