gcc version 3.2.2 20030222 (Red Hat Linux 3.2.2-5) 에서 발생했음.
…쩝 STL 오류코드 보느라 눈깔빠지는 줄 알았는데..
transform( s1.begin(), s1.end(), s1.begin(), tolower );
이 코드의 경우 VC 에서는 문제없이 돌아가는데 gcc에서는 toupper 인자, 리턴형 문제때문인지
no matching function for call to `transform(
__gnu_cxx::__normal_iterator std::char_traits< char >, std::allocator< char > > >,
__gnu_cxx::__normal_iterator< char*, std::basic_string < char,
std::char_traits< char >, std::allocator< char > > >,
__gnu_cxx::__normal_iterator std::char_traits< char >, std::allocator< char > > >, < unknown type >)’
이딴 썩을 에러코드를 뺃으면서 컴파일이 안된다.
해결방법은
transform( s1.begin(), s1.end(), s1.begin(), (int(*)(int))tolower );
로 수정. 즉 toupper 의 인자와 리턴형을 명시적으로 int형으로 수정해준것이다. 소스코드를 봐봐야 알겠지만 위에서 언급한 컴파일러의 빌트인 펑션 touuper 변수와 리턴형이 아마도 char로 되어있는게 아닌가 싶다.
(…엇…char로 되어있어야 더 잘되야 되는거 아냐?!
…귀찮다…)
냠…어쨋든 메모메모.
ps. 저렇게 해놓는게 올바른 방법인지는 모르겠다.