C ++ 11のフレンドテンプレートクラスでのVisualC ++エラー

Svalorzen

g ++ / clang ++で動作するコードがあります。最近、Visual C ++で機能しないことが報告されました。

コードは次のとおりです。

namespace q {
    template <typename X, typename Y>
    struct A {};
}

template <typename X>
struct B {
    template <typename Y>
    friend struct q::A;
};

int main() {
    return 0;
}

VC ++は次のエラーを返します。

source_file.cpp(9): error C2976: 'q::A': too few template arguments
source_file.cpp(3): note: see declaration of 'q::A'
source_file.cpp(10): note: see reference to class template instantiation 'B<X>' being compiled

誰が正しいですか?これを行うためのポータブルな方法はありますか?

user7860670

テンプレートパラメータを適切に記述すると、次のことが役立ちます。

template <typename X, typename Y>
friend struct q::A;

A友達として誤って宣言すると、プログラムの形式が正しくなくなるため、診断は必要ありません。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

C ++でフレンドクラスとテンプレートを使用したスコープ外エラー

分類Dev

c ++ 11エラーのテンプレートテンプレート

分類Dev

C ++テンプレート内部クラスフレンド演算子のオーバーロード

分類Dev

クラスエラー内のC ++テンプレートの特殊化

分類Dev

複雑なエラーへのc ++ 11再帰クラステンプレート

分類Dev

c ++ 11スレッドでのコンパイルエラー

分類Dev

C ++でのテンプレートクラスの利用

分類Dev

テンプレートクラス(C ++)でフレンドテンプレート関数を宣言することについての質問

分類Dev

C ++エラーコードボイラープレートのテンプレートとマクロ

分類Dev

クラステンプレートをC ++のクラステンプレートのフレンドとして宣言する

分類Dev

C ++ 11テンプレート、パラメーターパックのエイリアス

分類Dev

テンプレートパラメータとして文字列リストを使用したテンプレート静的クラス、c ++ 11での作成方法

分類Dev

テンプレートクラスでの抽象クラスの使用C ++

分類Dev

C ++でデフォルトのテンプレートパラメータを使用してテンプレートクラスを使用する場合の「テンプレート引数が少なすぎるエラー」

分類Dev

コンストラクターに引数を持つテンプレートクラスのC ++ 11 std :: vector

分類Dev

クラステンプレートのC ++エラーの使用には、テンプレート引数リストが必要です

分類Dev

テンプレート化されたクラスのtypedefでのC ++エラー

分類Dev

部分的なクラステンプレートの特殊化c ++ 11

分類Dev

C ++では、テンプレートクラスのメンバー関数を別のクラスのテンプレート型を使用してフレンドにできないのはなぜですか?

分類Dev

C ++ 11/14/17、GCC7とGCC8:フレンドクラステンプレートの名前検索

分類Dev

c ++-テンプレートクラスでオーバーロードするフレンド演算子

分類Dev

Unityでのリンカーエラー(Cユニットテストフレームワーク)

分類Dev

C ++ 1zでフレンドテンプレートクラステンプレートを宣言するとエラーが発生します:「template <classT> classA」の特殊化は名前空間に表示される必要があります

分類Dev

C ++演算子のオーバーロードテンプレートクラス

分類Dev

派生クラスでのC ++テンプレート関数のオーバーライド

分類Dev

テンプレートクラスのC ++テンプレートコピーコンストラクタ

分類Dev

C ++テンプレートクラスでの演算子のオーバーロードの問題

分類Dev

C ++テンプレートクラスでの演算子のオーバーロードの問題

分類Dev

C ++アプリケーションのエンドツーエンドテストフレームワーク

Related 関連記事

  1. 1

    C ++でフレンドクラスとテンプレートを使用したスコープ外エラー

  2. 2

    c ++ 11エラーのテンプレートテンプレート

  3. 3

    C ++テンプレート内部クラスフレンド演算子のオーバーロード

  4. 4

    クラスエラー内のC ++テンプレートの特殊化

  5. 5

    複雑なエラーへのc ++ 11再帰クラステンプレート

  6. 6

    c ++ 11スレッドでのコンパイルエラー

  7. 7

    C ++でのテンプレートクラスの利用

  8. 8

    テンプレートクラス(C ++)でフレンドテンプレート関数を宣言することについての質問

  9. 9

    C ++エラーコードボイラープレートのテンプレートとマクロ

  10. 10

    クラステンプレートをC ++のクラステンプレートのフレンドとして宣言する

  11. 11

    C ++ 11テンプレート、パラメーターパックのエイリアス

  12. 12

    テンプレートパラメータとして文字列リストを使用したテンプレート静的クラス、c ++ 11での作成方法

  13. 13

    テンプレートクラスでの抽象クラスの使用C ++

  14. 14

    C ++でデフォルトのテンプレートパラメータを使用してテンプレートクラスを使用する場合の「テンプレート引数が少なすぎるエラー」

  15. 15

    コンストラクターに引数を持つテンプレートクラスのC ++ 11 std :: vector

  16. 16

    クラステンプレートのC ++エラーの使用には、テンプレート引数リストが必要です

  17. 17

    テンプレート化されたクラスのtypedefでのC ++エラー

  18. 18

    部分的なクラステンプレートの特殊化c ++ 11

  19. 19

    C ++では、テンプレートクラスのメンバー関数を別のクラスのテンプレート型を使用してフレンドにできないのはなぜですか?

  20. 20

    C ++ 11/14/17、GCC7とGCC8:フレンドクラステンプレートの名前検索

  21. 21

    c ++-テンプレートクラスでオーバーロードするフレンド演算子

  22. 22

    Unityでのリンカーエラー(Cユニットテストフレームワーク)

  23. 23

    C ++ 1zでフレンドテンプレートクラステンプレートを宣言するとエラーが発生します:「template <classT> classA」の特殊化は名前空間に表示される必要があります

  24. 24

    C ++演算子のオーバーロードテンプレートクラス

  25. 25

    派生クラスでのC ++テンプレート関数のオーバーライド

  26. 26

    テンプレートクラスのC ++テンプレートコピーコンストラクタ

  27. 27

    C ++テンプレートクラスでの演算子のオーバーロードの問題

  28. 28

    C ++テンプレートクラスでの演算子のオーバーロードの問題

  29. 29

    C ++アプリケーションのエンドツーエンドテストフレームワーク

ホットタグ

アーカイブ