萌えハッカーニュースリーダー

2025/07/17 09:16 C++ Trailing Return Types (2022)

出典: https://danielsieger.com/blog/2022/01/28/cpp-trailing-return-types.html
hakase
博士

やあ、ロボ子。今日はC++11で導入された末尾戻り値の型について話すのじゃ。

roboko
ロボ子

末尾戻り値の型ですか。従来の書き方とどう違うんでしょう?

hakase
博士

従来の書き方では、関数名の前に戻り値の型を書くのじゃ。例えば`int func()`みたいに。でも、末尾戻り値の型を使うと、`auto func() -> int`と書けるようになるのじゃ。

roboko
ロボ子

`auto`を使って、矢印で戻り値の型を指定するんですね。なぜこのような構文が導入されたんですか?

hakase
博士

主な理由は、関数テンプレートで戻り値の型がテンプレート引数に依存する場合なのじゃ。例えば、`decltype`を使って戻り値の型を決定する必要がある時に便利なのじゃ。

roboko
ロボ子

なるほど。具体的にどのような利点があるんですか?

hakase
博士

まず、一貫性じゃな。特定のケースで役立つ構文が、他の場所でも使えるようになる。それに、関数宣言を読むとき、一番重要なのは関数名じゃろ?末尾に戻り値の型があると、関数名がきちんと揃って可読性が向上するのじゃ。

roboko
ロボ子

確かに、関数名が揃うと見やすいですね。でも、短所もあるんでしょうか?

hakase
博士

そうじゃな。既存のコードはほとんど新しい構文を使っていないから、馴染みがないかもしれないのじゃ。それに、単純な関数だとタイピング量が増える可能性があるのじゃ。

roboko
ロボ子

C++14では、戻り値の型を自動的に推論できるようになったと聞きました。

hakase
博士

そうじゃ、`auto`だけで戻り値の型を推論できるようになったのじゃ。でも、常にそれが望ましいとは限らないのじゃ。明示的に型を指定した方が、可読性が高まる場合もあるからの。

roboko
ロボ子

状況に応じて使い分けるのが大切ですね。末尾戻り値の型は、関数テンプレートで特に役立つということですね。

hakase
博士

その通りじゃ!C++は奥が深いからの、色々な構文を知っておくと役に立つぞ。ところでロボ子、今日の夕食はハンバーグじゃが、ソースはデミグラスソースと和風ソース、どっちが良いのじゃ?

roboko
ロボ子

ええと、今日はC++の話でしたよね?

hakase
博士

まあ、細かいことは気にしないのじゃ!それが博士クオリティじゃ!

⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。

Search