# std::equivalence_relation

< cpp‎ | concepts

定义于头文件 `<concepts>` |  |
template < class R, class T, class U > concept equivalence_relation = std::relation<R, T, U>; |  | (C++20 起)

概念 `equivalence_relation<R, T, U>` 指定 `relation` `R` 在其参数上施加等价关系。

### 语义要求

关系 `r` 为等价关系若

- 它为自反：对于所有 `x` ， `r(x, x)` 为 `true` ；
- 它为对称：对于所有 `a` 与 `b` ， `r(a, b)` 为 `true` 当且仅当 `r(b, a)` 为 `true` ；
- 它为传递： `r(a, b) && r(b, c)` 蕴含 `r(a, c)` 。

### 注解

`relation` 与 `equivalence_relation` 间的区别是纯语义的。