locale 객체 인자의 리퍼런스 전달
글쓴이: theuhm / 작성시간: 수, 2004/12/01 - 10:01오후
std::string 객체에 담긴 문자열을 소문자로 바꾸고자 다음과 같은 코드를 썼습니다.
transform( s.begin(), s.end(), s.begin(), bind2nd( ptr_fun( tolower<char> ), locale("english") ) );
그런데 알 수 없는 에러를 내더군요
361: error: forming reference to reference type `const std::locale&'
아마도, locale 객체의 리퍼런스에 대한 리퍼런스를 만드려는 시도가 실패한거 같은데, 위 코드를 어떻게 고쳐야 적절히 컴파일 되는 코드가 될까요?
PS : 현재는 C의 tolower()함수를 써서
transform( s.begin(), s.end(), s.begin(), ptr_fun( tolower ) );
와 같이 해결하고 있습니다.
Forums:
말 그대로 참조에 대한 참조는 허용되지 않기 때문입니다. 불행히도 현재
말 그대로 참조에 대한 참조는 허용되지 않기 때문입니다. 불행히도 현재 표준에서 제공하는
binder로는 해결이 불가능합니다. 현재 진행중인 표준 개정 작업에서 issue list에
들어가 있다고 하니 차기 표준에서는 어떤 식으로든 해결이 될 것으로 보입니다.
이미 하신 것처럼 C의 tolower를 쓰거나 boost의 binder를 쓰는 방법도 있습니다.
http://www.boost.org/libs/functional/binders.html
댓글 달기