limes 3.1.0
Composable Calculus Expressions for C++20
Loading...
Searching...
No Matches
binary.hpp File Reference
#include <span>
#include <string>
#include <cstddef>
#include <algorithm>
#include "../concepts.hpp"
+ Include dependency graph for binary.hpp:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  limes::expr::is_integral< T >
 
struct  limes::expr::Add
 
struct  limes::expr::Sub
 
struct  limes::expr::Mul
 
struct  limes::expr::Div
 
struct  limes::expr::Binary< Op, L, R >
 
struct  limes::expr::is_const_expr< T >
 
struct  limes::expr::is_const_expr< Const< T > >
 
struct  limes::expr::is_expr_node< T, typename >
 
struct  limes::expr::is_expr_node< T, std::void_t< decltype(T::arity_v)> >
 

Namespaces

namespace  limes
 
namespace  limes::expr
 Expression layer for composable calculus.
 

Functions

template<typename L , typename R >
requires (is_expr_node_v<L> && is_expr_node_v<R>)
constexpr auto limes::expr::operator+ (L l, R r)
 
template<typename L , typename T >
requires (is_expr_node_v<L> && std::is_arithmetic_v<T>)
constexpr auto limes::expr::operator+ (L l, T r)
 
template<typename T , typename R >
requires (std::is_arithmetic_v<T> && is_expr_node_v<R>)
constexpr auto limes::expr::operator+ (T l, R r)
 
template<typename L , typename R >
requires (is_expr_node_v<L> && is_expr_node_v<R>)
constexpr auto limes::expr::operator- (L l, R r)
 
template<typename L , typename T >
requires (is_expr_node_v<L> && std::is_arithmetic_v<T>)
constexpr auto limes::expr::operator- (L l, T r)
 
template<typename T , typename R >
requires (std::is_arithmetic_v<T> && is_expr_node_v<R>)
constexpr auto limes::expr::operator- (T l, R r)
 
template<typename L , typename R >
requires (is_expr_node_v<L> && is_expr_node_v<R> && !is_integral<L>::value && !is_integral<R>::value)
constexpr auto limes::expr::operator* (L l, R r)
 
template<typename L , typename T >
requires (is_expr_node_v<L> && std::is_arithmetic_v<T>)
constexpr auto limes::expr::operator* (L l, T r)
 
template<typename T , typename R >
requires (std::is_arithmetic_v<T> && is_expr_node_v<R>)
constexpr auto limes::expr::operator* (T l, R r)
 
template<typename L , typename R >
requires (is_expr_node_v<L> && is_expr_node_v<R>)
constexpr auto limes::expr::operator/ (L l, R r)
 
template<typename L , typename T >
requires (is_expr_node_v<L> && std::is_arithmetic_v<T>)
constexpr auto limes::expr::operator/ (L l, T r)
 
template<typename T , typename R >
requires (std::is_arithmetic_v<T> && is_expr_node_v<R>)
constexpr auto limes::expr::operator/ (T l, R r)
 

Variables

template<typename T >
constexpr bool limes::expr::is_const_expr_v = is_const_expr<T>::value
 
template<typename T >
constexpr bool limes::expr::is_expr_node_v = is_expr_node<T>::value