{
술어 : predicate 란 true/false 로 리턴하는 함수 객체를 말한다.
왜 순수한 함수로 만들어야 하는가?
알고리즘 속으로 들어간 함수 객체는 그 값이 복사에 의해서 구현부 쪽으로 전달 되어 진다. 이 과정에서 함수 객체의 상태의 현재 상태가 유지되며 전달되기가 어렵기 때문에, 아예 순수하게 만들어서, 사용하는게 더 편하다는 의미에서 순수한 함수로 만들어야 한다는 것이다.
몇가지 술어 함수 만드는 일반론이 있는데, operator() 를 const 로 만들고, 가상 함수가 없도록 하고, 내부 데이터를 쓰지 않는다 라는 일반론이다. 이 이야기는 pimple 이디엄과 맞물리면서 꽤 좋게 생각된다. ^^
반드시 상태를 가지는 함수 객체여야 한다면, 내부 데이터가 포인터로 유지되게 하면 된다. 문제는 메모리 해제에 대해서 각별히 주의를 해야 한다는 것이다.
}
최근댓글