#include <iostream>

template< class U, class X, class T >
class Klasa
{
  public:
    template< typename Z >
    void Method()
    {
    }
};

template< class U >
class Klasa< U, int, U >
{
  public:
    template< typename Z >
    void Method()
    {
      typedef typename std::enable_if< !std::is_same< int, Z >::value, Z >::type whatever;

      std::cout << "Method< Z >" << std::endl;
    }
   void Method()
    {
      std::cout << "Method< int >" << std::endl;
    }
};

int main()
{
  Klasa< float, int, float > lK;

  lK.Method< float >();
  lK.Method< double >();
  lK.Method();

  return( 0 );
}