Вам не нужно использовать template <> со специализированной функцией-членом, потому что компилятор знает, что вы специализируете Temp для типа int. Таким образом, пустой шаблон <> выдает ошибку.
int Temp<int>::increment() {
return ++x;
}
шаблон используется, чтобы сообщить компилятору, что T является параметром шаблона, вот и все. Но в вашем случае вы специализируетесь на типе int, поэтому вам не нужно указывать template <>. template <> применим только для класса, а не для функций-членов, определяющих вне класса.