title: A weird behaviour of SFINAE
body: <p>I met a weird behaviour when implementing a SFINAE class.
  I want to use SFINAE to allow several types to be implemented. And disallow other types</p>
  <pre><code>template&lt;typename T&gt;
  class Base
  {
  public:
      using Enable = typename std::enable_if_t&lt;std::is_same&lt;T, std::string&gt;::value&gt;;
      std::tuple&lt;T&gt; data; //(1)
  };
  class NotAllowedType{};
  class A: public Base&lt;std::string&gt;{}; //(2)
  class B: public Base&lt;NotAllowedType&gt;{};
  
  int main()
  {
      B b;
  }
  </code></pre>
  <p>The thing is, it can pass compile.
  If (1) or (2) commented, it fails the compile as expected</p>
  <p>I uses g++ -std=c++17</p>