クラステンプレートの特殊化で「期待される '>'」?

重量

std :: is_arithmeticテンプレートが適用される型でのみ使用したいクラスを作成しています。私のコードは次のとおりです。

#include <type_traits>

template<typename A, typename B>
class Stream {};

template <typename T>
class Stream <typename T,
    typename std::enable_if<std::is_arithmetic<T>::value>::type * = nullptr> {
    //...
};

コンパイラは、「>」を予期していたため、「=」は構文エラーであると言っていますが、これはあまり意味がありません。部分的なテンプレートの特殊化をまだ完全に把握していないように感じますが、何が欠けていますか?

HolyBlackCat

特殊化では、クラス名に続くテンプレートパラメータリストには、タイプと値のみが含まれている必要があります。

そこにデフォルトの引数を入れることはできません。それらはプライマリテンプレートに属しています。
そして、typenameそこには必要ありません(たとえば、依存型がない限りtypename std::enable_if<...T...>)。

コードの動作バージョンは次のとおりです。

template<typename A, typename = void>
class Stream {};

template <typename T>
class Stream<T, std::enable_if_t<std::is_arithmetic_v<T>>>
{};

void型を2番目のパラメーターに渡すことで、チェックを回避できることに注意してください。static_assert(std::is_void_v<T>);偶発的な誤用を防ぐために、おそらくプライマリテンプレートにを追加する必要があります。

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

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

編集
0

コメントを追加

0

関連記事

分類Dev

テンプレート化されたクラスのメンバー構造体を特殊化する方法

分類Dev

テンプレート化されたクラスのメンバー構造体を特殊化する方法

分類Dev

別のクラステンプレート内で完全に特殊化されたクラスのコンストラクターを定義する方法

分類Dev

ネストされたテンプレートテンプレートクラスの部分的な特殊化

分類Dev

特殊化されていないテンプレートでのテンプレート特殊化のメンバーアクセス

分類Dev

完全に特殊化されたクラステンプレート用の関数テンプレートの明示的な特殊化

分類Dev

関数テンプレート(クラステンプレートのメンバー)を明示的に特殊化すると、「部分的な特殊化は許可されていません」というエラーが発生します。なぜですか?

分類Dev

テンプレート化されたクラスのメンバー関数の特殊化

分類Dev

継承されたネストされたテンプレートクラスの特殊化

分類Dev

テンプレート化されたクラスとテンプレート化されたメソッドのテンプレート特殊化構文

分類Dev

内部クラスのテンプレートの特殊化

分類Dev

テンプレートクラス(すでに指定されている)でテンプレートメンバー関数を特殊化する方法は?

分類Dev

クラスと関数テンプレートの特殊化

分類Dev

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

分類Dev

テンプレートクラスの部分特殊化構文

分類Dev

テンプレートコンストラクタでのテンプレートクラスの特殊化

分類Dev

テンプレート化されたクラス内のメソッドの完全な特殊化

分類Dev

クラス内でのテンプレートの特殊化の可能性

分類Dev

ネストされたクラステンプレートの特殊化の問題

分類Dev

テンプレート化された関数を持つ特殊化テンプレートクラス

分類Dev

C ++のクラステンプレートに、特殊化されていない共通の静的メンバーを含めることは可能ですか?

分類Dev

テンプレートクラスでの名前空間の特殊化

分類Dev

doubleでテンプレートクラスを特殊化する方法は?

分類Dev

別の部分的に特殊化されたテンプレートクラスから部分的に特殊化されたテンプレートクラスを継承する

分類Dev

派生クラスによるc ++テンプレートの特殊化

分類Dev

C ++テンプレートの特殊化に基本クラスを追加する

分類Dev

C ++テンプレートの特殊化に基本クラスを追加する

分類Dev

テンプレート化されたオーバーライド関数の特殊化/オブジェクトのスライスを回避する

分類Dev

テンプレートクラスでのテンプレートメンバー関数の特殊化

Related 関連記事

  1. 1

    テンプレート化されたクラスのメンバー構造体を特殊化する方法

  2. 2

    テンプレート化されたクラスのメンバー構造体を特殊化する方法

  3. 3

    別のクラステンプレート内で完全に特殊化されたクラスのコンストラクターを定義する方法

  4. 4

    ネストされたテンプレートテンプレートクラスの部分的な特殊化

  5. 5

    特殊化されていないテンプレートでのテンプレート特殊化のメンバーアクセス

  6. 6

    完全に特殊化されたクラステンプレート用の関数テンプレートの明示的な特殊化

  7. 7

    関数テンプレート(クラステンプレートのメンバー)を明示的に特殊化すると、「部分的な特殊化は許可されていません」というエラーが発生します。なぜですか?

  8. 8

    テンプレート化されたクラスのメンバー関数の特殊化

  9. 9

    継承されたネストされたテンプレートクラスの特殊化

  10. 10

    テンプレート化されたクラスとテンプレート化されたメソッドのテンプレート特殊化構文

  11. 11

    内部クラスのテンプレートの特殊化

  12. 12

    テンプレートクラス(すでに指定されている)でテンプレートメンバー関数を特殊化する方法は?

  13. 13

    クラスと関数テンプレートの特殊化

  14. 14

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

  15. 15

    テンプレートクラスの部分特殊化構文

  16. 16

    テンプレートコンストラクタでのテンプレートクラスの特殊化

  17. 17

    テンプレート化されたクラス内のメソッドの完全な特殊化

  18. 18

    クラス内でのテンプレートの特殊化の可能性

  19. 19

    ネストされたクラステンプレートの特殊化の問題

  20. 20

    テンプレート化された関数を持つ特殊化テンプレートクラス

  21. 21

    C ++のクラステンプレートに、特殊化されていない共通の静的メンバーを含めることは可能ですか?

  22. 22

    テンプレートクラスでの名前空間の特殊化

  23. 23

    doubleでテンプレートクラスを特殊化する方法は?

  24. 24

    別の部分的に特殊化されたテンプレートクラスから部分的に特殊化されたテンプレートクラスを継承する

  25. 25

    派生クラスによるc ++テンプレートの特殊化

  26. 26

    C ++テンプレートの特殊化に基本クラスを追加する

  27. 27

    C ++テンプレートの特殊化に基本クラスを追加する

  28. 28

    テンプレート化されたオーバーライド関数の特殊化/オブジェクトのスライスを回避する

  29. 29

    テンプレートクラスでのテンプレートメンバー関数の特殊化

ホットタグ

アーカイブ