Namespaces
Variants

std::experimental::ranges:: Predicate

From cppreference.net
template < class F, class ... Args >

concept bool Predicate =
RegularInvocable < F, Args... > &&

Boolean < std:: result_of_t < F && ( Args && ... ) >> ;
(ranges TS)

Predicate<F, Args...> 개념은 F Args... 에 의해 인코딩된 타입과 값 범주를 갖는 인수들을 받아들이는 술부(predicate)임을 명시합니다. 즉, 이러한 인수들로 호출되어 Boolean 결과를 생성할 수 있습니다.

RegularInvocable 는 호출 가능 객체나 인자를 수정하지 않고, 동등성 보존이 되어야 함을 요구한다는 점에 유의하십시오.

동등성 보존

표현식은 동일한 입력이 주어졌을 때 동일한 출력을 결과로 내놓는다면 등식 보존(equality preserving) 합니다.

  • 표현식의 입력은 피연산자들로 구성됩니다.
  • 표현식의 출력은 결과와 표현식에 의해 수정된 모든 피연산자(있는 경우)로 구성됩니다.

동등성 보존이 요구되는 모든 표현식은 추가로 안정적(stable) 이어야 합니다: 동일한 입력 객체로 이러한 표현식을 두 번 평가할 때, 해당 입력 객체에 명시적인 수정이 개입되지 않는 한 동일한 출력을 가져야 합니다.