mpc
Haskell-like feature supports in C++
operations.hpp
Go to the documentation of this file.
1
2#pragma once
3#include <functional> // std::plus, etc.
5
6namespace mpc {
8 inline namespace cpo {
9 // Arithmetic operations
11 inline constexpr partial<std::plus<>> plus;
13 inline constexpr partial<std::minus<>> minus;
21 inline constexpr partial<std::negate<>> negate;
22
23 // Comparisons
36 // WORKAROUND: LLVM 13.0.0 has not implemented std::compare_three_way
37 // /// Partially applicable std::compare_three_way.
38 // inline constexpr partial<std::compare_three_way> compare_three_way;
39
40 // Logical operations
47
48 // Bitwise operations
52 inline constexpr partial<std::bit_or<>> bit_or;
57 } // namespace cpo
58} // namespace mpc
constexpr partial< std::bit_or<> > bit_or
Partially applicable std::bit_or<>.
Definition: operations.hpp:52
constexpr partial< std::logical_and<> > logical_and
Partially applicable std::logical_and<>.
Definition: operations.hpp:42
constexpr partial< std::bit_xor<> > bit_xor
Partially applicable std::bit_xor<>.
Definition: operations.hpp:54
constexpr partial< std::divides<> > divides
Partially applicable std::divides<>.
Definition: operations.hpp:17
constexpr partial< std::ranges::less > less
Partially applicable std::ranges::less.
Definition: operations.hpp:31
constexpr partial< std::logical_or<> > logical_or
Partially applicable std::logical_or<>.
Definition: operations.hpp:44
constexpr partial< std::bit_and<> > bit_and
Partially applicable std::bit_and<>.
Definition: operations.hpp:50
constexpr partial< std::modulus<> > modulus
Partially applicable std::modulus<>.
Definition: operations.hpp:19
constexpr partial< std::multiplies<> > multiplies
Partially applicable std::multiplies<>.
Definition: operations.hpp:15
constexpr partial< std::ranges::greater_equal > greater_equal
Partially applicable std::ranges::greater_equal.
Definition: operations.hpp:33
constexpr partial< std::ranges::less_equal > less_equal
Partially applicable std::ranges::less_equal.
Definition: operations.hpp:35
constexpr partial< std::plus<> > plus
Partially applicable std::plus<>.
Definition: operations.hpp:11
constexpr partial< std::ranges::greater > greater
Partially applicable std::ranges::greater.
Definition: operations.hpp:29
constexpr partial< std::ranges::not_equal_to > not_equal_to
Partially applicable std::ranges::not_equal_to.
Definition: operations.hpp:27
constexpr partial< std::ranges::equal_to > equal_to
Partially applicable std::ranges::equal_to.
Definition: operations.hpp:25
constexpr partial< std::logical_not<> > logical_not
Partially applicable std::logical_not<>.
Definition: operations.hpp:46
constexpr partial< std::negate<> > negate
Partially applicable std::negate<>.
Definition: operations.hpp:21
constexpr partial< std::bit_not<> > bit_not
Partially applicable std::bit_not<>.
Definition: operations.hpp:56
constexpr partial< std::minus<> > minus
Partially applicable std::minus<>.
Definition: operations.hpp:13
Implements a perfect-forwarding call wrapper.
Definition: partial.hpp:63