GCCのoverrideのバグらしきもの
ask.fmにこのような質問がきた。
C++では、overrideはキーワードではない。overrideは、特定の文脈でだけ文法で認識され、それ以外の場所では、単なる識別子となる。
そのため、以下のようなコードが書ける。
struct override { } ;
struct B
{
virtual auto f() -> override ;
} ;
struct D : B
{
// GCC: error: two or more data types in declaration of 'type name'
auto f() -> override override ;
} ;
しかしなぜかGCCは開発版の5.0ですら、コンパイルエラーとなる。
まさか未だにこのような面白い問題が残っているとは。
GCC Bugzillaを検索したところ、同じ不具合は報告されていないようなので、報告してみた。
Clangでは問題がない。
ドワンゴ広告
ドワンゴは本物のC++プログラマーを募集しています。
CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0