title: test class type without specifying template argument in c++20
body: <p>I would like to select instance by type while iterating via std::apply in a std::tuple.
  Since I have multiple times the same class in my tuple I can not just use std::get</p>
  <p>Is there a way to express that I want all the variant of A  instead of writting
  <code> A&lt; ... &gt;  </code></p>
  <pre><code>#include &lt;iostream&gt;
  #include &lt;tuple&gt;
  
  template &lt;typename T&gt;
  struct A
  {
      public:
          T val;
          
          A(T t) : val(t)
          {};
  };
  
  using MyType = std::tuple&lt; A&lt;double&gt; , A&lt;double&gt; , A&lt;int&gt;, bool&gt;;
  
  template&lt;typename T&gt;
  void logic(T&amp; c)
  {
      if constexpr ( std::is_same&lt;T, A&lt; ... &gt; &gt;::value) 
          std::cout &lt;&lt; c.val &lt;&lt; std::endl;
  }
  
  void printOnlyA(MyType&amp; v)
  {
      std::apply([&amp;](auto &amp;&amp;...c) { ( logic(c), ...); }, v);
  }
  
  int main() {
      
      A&lt;double&gt; a{3.5};
      A&lt;double&gt; b{5.5};
      A&lt;int&gt; c{2};
      
  
      MyType dd{std::make_tuple(a,b,c , false)};
      printOnlyA(dd);
      
          
      return 0;
  }
  </code></pre>
  <p>I m using c++ 20, and would like to avoid the old c++11 approach to std::false_type and std::true_type. I can not figure out the way to do it with concept</p>
  <p>Thanks in advance</p>