メンバー関数のdecltype

シルバーソニック
class A {
    int f(int x, int j) { return 2;}
    decltype(f)* p;
};

エラーが発生します:

error: decltype cannot resolve address of overloaded function

そのエラーがオーバーロードされた関数についてさえ話している理由が理解できません。同様に、関数にアクセスするにはスコープ演算子を使用する必要があるかもしれないと思いました。

class A {
    int f(int x, int j) { return 2;}
    decltype(A::f)* p;
};

それでもエラーが発生しますが、説明が明確になります。

error: invalid use of non-static member function 'int A::f(int, int)'

decltypeを使用してメンバー関数の型を見つけることが許可されていないのはなぜですか?または、メンバー関数を設定してstatic、いずれの場合もエラー削除します。

あなたが本当に欲しいのは:

struct a {
    int f(int x, int j) { return 2;}
    decltype(&a::f) p;
};

Live demo

fあなたが参照しているのはメンバー関数なので推定されるタイプは次のとおりです。

int(a::*)(int, int)

&コンパイラがないと、コンパイラは、引数を指定せずに関数を呼び出そうとしていると想定します。おそらく、Clangのエラーメッセージはこれについてより明確です:

error: call to non-static member function without an object argument
    decltype(a::f) p;

ポインタ型が本当に必要ない場合は、後でstd::remove_pointer_tから適用できます<type_traits>

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

オーバーロードされたメンバー関数のdecltype

分類Dev

メンバー関数のdecltype(auto)は無効な本体を無視し、decltype(expr)は失敗します

分類Dev

c ++ 11のテンプレート引数としてのメンバー関数ポインタのdecltype

分類Dev

関数パラメーターのdecltype

分類Dev

メンバー関数の静的変数

分類Dev

メンバー関数の静的変数

分類Dev

オブジェクト関数でdecltypeを使用してメンバー変数を宣言できますか?

分類Dev

引数なしのメンバー関数を無効にしようとすると、SFINAEがdecltype()内で機能しない

分類Dev

メンバー関数の特性

分類Dev

メンバー関数への参照

分類Dev

フレンド関数でのメンバー関数の使用

分類Dev

std :: bindは、クラスメンバー関数のdecltypeタイプで機能しますが失敗しました

分類Dev

Constexprメンバー関数

分類Dev

Constメンバー関数

分類Dev

この関数とメンバー関数のconst-correctness

分類Dev

別の関数を返すTypescriptメンバー関数

分類Dev

関数の戻り値の型の場合、2つのパラメーター= decltype(a、b)を持つdecltype

分類Dev

変数のテンプレートパラメータのdecltype

分類Dev

constメンバー関数のメンバー変数のタイプ

分類Dev

メンバー関数でのメンバー変数の初期化

分類Dev

オプションメンバーのdecltype

分類Dev

メンバー関数のpython静的オーバーロード

分類Dev

オーバーロードされたメンバー関数の関数特性

分類Dev

関数テンプレートのC ++ Decltype

分類Dev

anglejsの$ scopeメンバー関数内の関数内の変数の参照

分類Dev

クラスメンバーとメンバー関数のメモリ位置

分類Dev

メンバーフィールドのメンバー関数のstd :: async

分類Dev

C ++のconstメンバー関数での静的メンバーの変更

分類Dev

メンバー関数へのC ++コールバック関数

Related 関連記事

  1. 1

    オーバーロードされたメンバー関数のdecltype

  2. 2

    メンバー関数のdecltype(auto)は無効な本体を無視し、decltype(expr)は失敗します

  3. 3

    c ++ 11のテンプレート引数としてのメンバー関数ポインタのdecltype

  4. 4

    関数パラメーターのdecltype

  5. 5

    メンバー関数の静的変数

  6. 6

    メンバー関数の静的変数

  7. 7

    オブジェクト関数でdecltypeを使用してメンバー変数を宣言できますか?

  8. 8

    引数なしのメンバー関数を無効にしようとすると、SFINAEがdecltype()内で機能しない

  9. 9

    メンバー関数の特性

  10. 10

    メンバー関数への参照

  11. 11

    フレンド関数でのメンバー関数の使用

  12. 12

    std :: bindは、クラスメンバー関数のdecltypeタイプで機能しますが失敗しました

  13. 13

    Constexprメンバー関数

  14. 14

    Constメンバー関数

  15. 15

    この関数とメンバー関数のconst-correctness

  16. 16

    別の関数を返すTypescriptメンバー関数

  17. 17

    関数の戻り値の型の場合、2つのパラメーター= decltype(a、b)を持つdecltype

  18. 18

    変数のテンプレートパラメータのdecltype

  19. 19

    constメンバー関数のメンバー変数のタイプ

  20. 20

    メンバー関数でのメンバー変数の初期化

  21. 21

    オプションメンバーのdecltype

  22. 22

    メンバー関数のpython静的オーバーロード

  23. 23

    オーバーロードされたメンバー関数の関数特性

  24. 24

    関数テンプレートのC ++ Decltype

  25. 25

    anglejsの$ scopeメンバー関数内の関数内の変数の参照

  26. 26

    クラスメンバーとメンバー関数のメモリ位置

  27. 27

    メンバーフィールドのメンバー関数のstd :: async

  28. 28

    C ++のconstメンバー関数での静的メンバーの変更

  29. 29

    メンバー関数へのC ++コールバック関数

ホットタグ

アーカイブ