本の虫

著者:江添亮
ブログ: http://cpplover.blogspot.jp/
メール: boostcpp@gmail.com
Twitter: https://twitter.com/EzoeRyou
GitHub: https://github.com/EzoeRyou

アマゾンの江添のほしい物リストを著者に送るとブログ記事のネタになる

筆者にブログのネタになる品物を直接送りたい場合、住所をメールで質問してください。

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を検索したところ、同じ不具合は報告されていないようなので、報告してみた。

Bug 64794 – GCC failed at virtual function with "override" trailing return type name, followed by override virt-specifier

Clangでは問題がない。

ドワンゴ広告

ドワンゴは本物のC++プログラマーを募集しています。

採用情報|株式会社ドワンゴ

CC BY-ND 4.0: Creative Commons — Attribution-NoDerivatives 4.0 International — CC BY-ND 4.0