関数の返品タイプのパラメーターを宣言するDecltype(自動なし)

StackOverflow https://stackoverflow.com/questions/20353745

  •  25-08-2022
  •  | 
  •  

質問

これは私にとって些細な質問のように見えます、多分私は正しいドキュメントを見つけられなかったかもしれません。

私はstruct Aを持っています、そして、パラメーターbを返すタイプの関数aであると定義したいです。

struct A{
    int operator[](int);
};

そして、ある時点で

decltype(A::operator[]) b = 0;

私はこれをすることができました:しかし、それは醜いです。

A a;
decltype(a[0]) b = 0;

(それはdouble / intなどです)、私はテンプレートを使用したくありません。

ありがとう、

役に立ちましたか?

解決

構文で遊ぶ以外に、私は必要性をよく理解していません。それはまさにそれです auto のために設計されました auto 追加されたのと同じ基準によってサポートされています decltype...

とにかく、関数呼び出しをシミュレートする必要があります。

decltype(std::declval<A>()[0]) b = 0;   // equivalent to `int b = 0;`
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top