Who can I force compilation to used dedicaced function instead of Template function?

Thanks for this tips.
I have made some search and found some topic.
I understand the logic of how can I "overload" a generic methode when a specific type is pass through parameter.
But I don't know if I use it right :

here my base class, with generic method (all other method and members have been remove to make clear)

class ram_vars {
  public:
    ram_vars(){};
    ~ram_vars(){
      del();
    }
    template <class T> ram_vars &operator=( const T &val ){
      Serial.println( "= template  " );
      focus();
      read();
      RAM.doMath( opCode_affectation, val );
      write();
      return( *this );
    }
};

here my specialized template outside of the class :

template <> ram_vars& ram_vars::operator=<ram_vars>( const ram_vars &val ){
      Serial.println( "= ram_vars  " );
      val.read();
      focus();
      write();
      return( *this );
    }

but I get linker error. What I have miss ?