boost::lambda
을 사용하여 간단한 조건자를 작성하려고하는데 많은 오류가 발생합니다.부스트 람다를 사용하여 정적 멤버에 액세스
나는 문서를 검사했는데 람다 식에서 정적 변수 std::string::npos
에 액세스하는 데 의심의 여지가있다. 내 코드 아래. 내가 비교
!= bl::bind(&std::string::npos, bl::_1)
to
!= std::string::npos
가 잘 구축,하지만 표현이 잘 형성되어있는 경우 확실하지 오전을 변경하는 경우
#include <boost/lambda/lambda.hpp>
#include <boost/lambda/core.hpp>
#include <boost/lambda/bind.hpp>
int main(int argc, char** argv){
typedef std::vector<std::string> array;
namespace bl = boost::lambda;
size_t (std::string::* fp)(const std::string&, size_t) const
= &std::string::find;
std::string to_find("AA");
size_t pos = 0;
const char* data [] = { "AAAA","BBBB","","CCAACC","DDDDD" };
array v(data, data +4);
assert(v.size() == 4);
std::replace_if(
v.begin()
,v.end()
, bl::bind(
fp
, bl::_1
, bl::constant_ref(to_find)
, bl::var(pos)
) != bl::bind(&std::string::npos, bl::_1)
, "||"
);
return 0;
}
. 때로는 람다의 게으른 평가로 인해 호출이 지연 될 수 있기 때문에 예상 결과를 얻지 못했습니다 (이 경우가 아니라 람다를 사용한 이전 테스트에서).
부스트 람다에서 정적 멤버에 액세스하는 올바른 방법은 무엇인지 알고 계십니까?
는 단순히 입력 매개 변수 서명도 boost::constant_ref
에 따라 다음
boost::constant(std::string::npos)
boost::var(std::string::npos)
중 하나를 사용하여 수행 할 수 있습니다 정적 변수에 액세스 당신에게 모든
AFG