以下のクラステンプレートの特殊化では、整数タイプのテンプレート引数を使用する場合、s1
のインスタンス化のみが可能です。継承によるSFINAEクラス
template <typename, typename = void>
struct s1;
template <typename T>
struct s1<T, std::enable_if_t<std::is_integral<T>::value>> { };
次のクラステンプレートs2
は類似しています。条件付きでは簡単な基底クラスから個人的に継承しますが。 s1
とs2
の機能の違いは何ですか? s1
で
struct Base { };
template <typename T>
struct s2 : private std::enable_if_t<std::is_integral<T>::value,Base> { };
'T 'が整数でない場合、' s2'はどのようなものから派生すると思いますか? – AndyG
s2をBaseからプライベートに派生させる場合、私はすべての目的と目的が同等であると考えます。 –
@RichardHodgesが提案するように、私はs2を更新して私的に継承しました。 – user2023370