0
  1. ウィキペディアより

    auto 自動型推定でない場合、この場合(以下)のキーワードの使用は何ですか?

    struct SomeStruct {
        auto func_name(int x, int y) -> int;
    };
    
    auto SomeStruct::func_name(int x, int y) -> int {return x + y; }
    
  2. 明示的に型を持つ必要がある状況にはどのようなものがありますか?

4

1 に答える 1

10

これは末尾の戻り型です。auto戻り値の型が後で来ることを示す単なるプレースホルダーです。

これは、戻り値の型を計算する際にパラメーター名を使用できるようにするためです。

template<typename L, typename R>
auto add(L l, R r) -> decltype(l+r) { return l+r; }

代替手段は次のとおりです。

template<typename L, typename R>
decltype(std::declval<L>()+std::declval<R>())
add(L l, R r)
{ return l+r; }

言語への将来の追加では、末尾の戻り値の型を省略し、代わりにラムダで許可されている自動型推定を使用できるようになる可能性があります。

template<typename L, typename R>
auto add(L l, R r) { return l+r; }
于 2013-03-19T20:49:43.830 に答える