Test whether a type T is among the types of a tuple On SO, I asked for a way to do it without variadics. I also provided a typical "normal" implementation with variadics: 

template &lt;typename V, typename T&gt;
struct Is_in_tuple;

template &lt;typename V, typename T0, typename... T&gt;
struct Is_in_tuple &lt;V, tuple&lt;T0, T...&gt; &gt;
{
  static const bool value = Is_in_tuple&lt;V, tuple&lt;T...&gt; &gt;::value;
};

template &lt;typename V, typename... T&gt;
struct Is_in_tuple &lt;V, tuple&lt;V, T...&gt; &gt;
{
  static const bool value = true;
};

template &lt;typename V&gt;
struct Is_in_tuple &lt;V, tuple&lt;&gt; &gt;
{
  static const bool value = false;
};


I'd like a review on the above code. Is it safe / OK / missing something, before I make it my standard way of querying type lists?
Since you're implementing a traits-like check, I would typically expect your traits class types to be derived from std::true_type and std::false_type. This is certainly not required, and overall this implementation doesn't bug me. I was slightly surprised to see std::tuple&lt;&gt; called out explicitly, but that doesn't seem to change the overall correctness in any way.

The biggest question I have is how exact you want your type matching to be. Do you require exact type matches like std::is_same&lt;T, U&gt; or usably similar types like std::is_convertible&lt;T, U&gt;? To be concrete, what should Is_in_tuple&lt;decltype(0), std::tuple&lt;unsigned int&gt;&gt;::value be? It would be great to have some unit tests that document this sort of edge case.

The only thing I see wrong with your implementation is by implication: either you must have included some form of using, either using namespace std; or using std::tuple;, or you are dependent on someone else having done so before including this header. While correct use of using is fine, particularly in implementation files or inside functions, I would strongly suggest avoiding it here where it will pollute (or require previous pollution of) the compilation unit of whatever code includes this.