Fully specialized. Template specialization allows you to gives functions and classes special behaviors for certain template parameter. Partial specialization is when you specify some of the template parameters, and full specialization is when you specify all of them.
Since you are not using any template specialization, the function definition must be in the header file like this:
#ifndef SillyMath_h
#define SillyMath_h
#include "Arduino.h"
template <typename A, typename B>
class SillyMath
{
public:
A add(A number_one, B number_two);
};
template <typename A , typename B>
A SillyMath<A, B>::add(A number_one, B number_two){
A result;
result = number_one + number_two;
return(result);
}
#endif