ciao.
Ho questo esempio:
.h:
codice:
#pragma once
#include <string>
#include <iostream>
template <typename T>
class CProva
{
public:
	CProva<T>();

	T setx(T val);

};

template <>
class CProva <int>
{
public:
	CProva<int>(){};
	int setx(int val);
	void pp();
};
.cpp
codice:
#include "StdAfx.h"
#include "Prova.h"
#include <stdio.h>
#include <iostream>
using namespace std;

template <typename T>
CProva<T>::CProva(void)
{
}

template <typename T>
T CProva<T>::setx(T val)
{
	return 1;
	
}

template <>
int CProva<int>::setx(int val)
{
	return 2;
	
}
ottengo quest'errore in vc 9(vs 2008):
Error 2 error C2910: 'CProva<int>::setx' : cannot be explicitly specialized c:\template\template\prova.cpp 26

se invece metto tutto nel .h funziona correttamente.
Ora quello che voglio capire è dove devo mettere la dichiarazione e dove l'implementazione quando uso i template.
poi ho visto in librerie o esempi le estensioni .cxx o .hxx , so che è semplicemente un estensione ma hanno un significato particolare relativo ai templates?

grazie.
ciao.