OpenKalman
Classes | Namespaces | Typedefs | Functions | Variables
value-arithmetic.hpp File Reference

Definitions for value arithmetic. More...

#include <functional>
#include "values/concepts/fixed.hpp"
#include "values/concepts/value.hpp"
#include "to_number.hpp"
#include "values/classes/operation.hpp"
Include dependency graph for value-arithmetic.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  OpenKalman::values::detail::value_common_with_impl< Arg1, Arg2, typename >
 
struct  OpenKalman::values::detail::value_common_with_impl< Arg1, Arg2, std::void_t< typename std::common_type< std::decay_t< decltype(values::to_number(std::declval< Arg1 >()))>, std::decay_t< decltype(values::to_number(std::declval< Arg2 >()))> >::type > >
 

Namespaces

 OpenKalman::values
 Definition for values::abs.
 

Typedefs

template<typename Arg1 , typename Arg2 >
using OpenKalman::values::detail::binary_common_type = std::common_type< number_type_of_t< Arg1 >, number_type_of_t< Arg2 > >
 
template<typename Arg1 , typename Arg2 >
using OpenKalman::values::detail::binary_common_type_t = std::common_type_t< number_type_of_t< Arg1 >, number_type_of_t< Arg2 > >
 

Functions

template<typename Arg , std::enable_if_t< value< Arg >, int > = 0>
constexpr Arg && OpenKalman::values::operator+ (Arg &&arg)
 
template<typename Arg , std::enable_if_t< value< Arg >, int > = 0>
constexpr auto OpenKalman::values::operator- (Arg arg)
 
template<typename Arg1 , typename Arg2 , std::enable_if_t< detail::value_common_with< Arg1, Arg2 > and std::is_invocable< std::plus< detail::binary_common_type_t< Arg1, Arg2 >>, Arg1 &&, Arg2 &&>::value, int > = 0>
constexpr auto OpenKalman::values::operator+ (Arg1 arg1, Arg2 arg2)
 
template<typename Arg1 , typename Arg2 , std::enable_if_t< detail::value_common_with< Arg1, Arg2 > and std::is_invocable< std::minus< detail::binary_common_type_t< Arg1, Arg2 >>, Arg1 &&, Arg2 &&>::value, int > = 0>
constexpr auto OpenKalman::values::operator- (Arg1 arg1, Arg2 arg2)
 
template<typename Arg1 , typename Arg2 , std::enable_if_t< detail::value_common_with< Arg1, Arg2 > and std::is_invocable< std::multiplies< detail::binary_common_type_t< Arg1, Arg2 >>, Arg1 &&, Arg2 &&>::value, int > = 0>
constexpr auto OpenKalman::values::operator* (Arg1 arg1, Arg2 arg2)
 
template<typename Arg1 , typename Arg2 , std::enable_if_t< detail::value_common_with< Arg1, Arg2 > and std::is_invocable< std::divides< detail::binary_common_type_t< Arg1, Arg2 >>, Arg1 &&, Arg2 &&>::value, int > = 0>
constexpr auto OpenKalman::values::operator/ (Arg1 arg1, Arg2 arg2)
 
template<typename A , typename B , std::enable_if_t< detail::value_common_with< A, B > and std::is_invocable< std::equal_to< detail::binary_common_type_t< A, B >>, const A &, const B &>::value, int > = 0>
constexpr bool OpenKalman::values::operator== (const A &a, const B &b)
 
template<typename A , typename B , std::enable_if_t< detail::value_common_with< A, B > and std::is_invocable< std::not_equal_to< detail::binary_common_type_t< A, B >>, const A &, const B &>::value, int > = 0>
constexpr bool OpenKalman::values::operator!= (const A &a, const B &b)
 
template<typename A , typename B , std::enable_if_t< detail::value_common_with< A, B > and std::is_invocable< std::less< detail::binary_common_type_t< A, B >>, const A &, const B &>::value, int > = 0>
constexpr auto OpenKalman::values::operator< (const A &a, const B &b)
 
template<typename A , typename B , std::enable_if_t< detail::value_common_with< A, B > and std::is_invocable< std::greater< detail::binary_common_type_t< A, B >>, const A &, const B &>::value, int > = 0>
constexpr auto OpenKalman::values::operator> (const A &a, const B &b)
 
template<typename A , typename B , std::enable_if_t< detail::value_common_with< A, B > and std::is_invocable< std::less_equal< detail::binary_common_type_t< A, B >>, const A &, const B &>::value, int > = 0>
constexpr auto OpenKalman::values::operator<= (const A &a, const B &b)
 
template<typename A , typename B , std::enable_if_t< detail::value_common_with< A, B > and std::is_invocable< std::greater_equal< detail::binary_common_type_t< A, B >>, const A &, const B &>::value, int > = 0>
constexpr auto OpenKalman::values::operator>= (const A &a, const B &b)
 

Variables

template<typename Arg1 , typename Arg2 >
constexpr bool OpenKalman::values::detail::value_common_with = value_common_with_impl<Arg1, Arg2>::value
 

Detailed Description

Definitions for value arithmetic.