pisarik's blog

By pisarik, 14 years ago, In Russian
template <typename _Ty>
class A
{
public:
	A(){}
	~A(){}
private:
	static bool Equals(const _Ty &a, const _Ty &b) { return a == b;}
};
//специализируем для char*
template<>
bool A<char*>::Equals(const char* &a, const char* &b){
	return !strcmp(a, b);	
}

Но получим такую ошибку 'A<_Ty>::Equals' : unable to match function definition to an existing declaration. Чуть поколупавшись, оказалось, что работает вот такой вариант:

template<>
bool A<char*>::Equals(char* const &a, char* const &b){ //WHY
	return !strcmp(a, b);	
}

char* const &a — сатана какой-то:DDD

UPD. В идеале надо было бы сделать Equals public'ом и friend'ом, а то немного не логично вышло, не ругайте:)

  • Vote: I like it
  • +7
  • Vote: I do not like it