次のコードは、G++ 4.8 ではコンパイルできません。
#include <vector>
using namespace std;
int main() {
vector<int> v;
typeof(v)::iterator it;
}
typeof を decltype に置き換えると、正常に動作します。テンプレート構造による回避策を知っています
template<class T> struct Self {
typedef T Type;
};
その後
Self<typeof(v)>::Type::Iterator it;
それでも迷惑です。
これは報告すべきバグですか?それともこれが特徴?