inner class 의 템플릿 완전특화

pok의 이미지

class A
{
protected:
	template< typename T > struct SDataManipulator{};
	template<> struct SDataManipulator< int >
	{
		static int convertData(char* _pSzData){ return atoi( _pSzData ); }
		static const int getZero(){return 0;}
	};
	template<> struct SDataManipulator< std::string >
	{
		static char* convertData(char* _pSzData){ return _pSzData; }
		static const char* getZero(){ return "0";}
	};
};

요런식으로 클래스 내에 protected로 써서 상속받는 클래스를 제외하고 외부로의 노출을 막으려고 했는데 gcc 3.4.4버전에서는 특화가 namespace 범위외에 있다고 에러를 내뿜으며 되지 않더군요.(Visual Studio 2005에서는 의도대로 잘 작동합니다.)

혹시 이거에 대한 표준 아시는 분 계시나요? vs의 확장표준인지 gcc가 표준을 잘 못지키고 있는건지 궁금하네요.