[logical.operations.not]

# 22 General utilities library [[utilities]](./#utilities)

## 22.10 Function objects [[function.objects]](function.objects#logical.operations.not)

### 22.10.10 Logical operations [[logical.operations]](logical.operations#not)

#### 22.10.10.4 Class template logical_not [logical.operations.not]

[ð](#lib:logical_not)

`template<class T = void> struct logical_not {
  constexpr bool operator()(const T& x) const;
};
`

[ð](#lib:operator(),logical_not)

`constexpr bool operator()(const T& x) const;
`

[1](#1)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L12899)

*Returns*: !x[.](#1.sentence-1)

[ð](#lib:logical_not%3c%3e)

`template<> struct logical_not<void> {
  template<class T> constexpr auto operator()(T&& t) const
    -> decltype(!std::forward<T>(t));

  using is_transparent = unspecified;
};
`

[ð](#lib:operator(),logical_not%3c%3e)

`template<class T> constexpr auto operator()(T&& t) const
    -> decltype(!std::forward<T>(t));
`

[2](#2)

[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/utilities.tex#L12921)

*Returns*: !std​::​forward<T>(t)[.](#2.sentence-1)
