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

Go to the source code of this file.

Classes

struct  limes::expr::PowTag
 
struct  limes::expr::MaxTag
 
struct  limes::expr::MinTag
 
struct  limes::expr::BinaryFunc< Tag, L, R >
 

Namespaces

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

Typedefs

template<typename L , typename R >
using limes::expr::RuntimePow = BinaryFunc< PowTag, L, R >
 
template<typename L , typename R >
using limes::expr::Max = BinaryFunc< MaxTag, L, R >
 
template<typename L , typename R >
using limes::expr::Min = BinaryFunc< MinTag, L, R >
 

Functions

template<typename L , typename R >
requires (is_expr_node_v<L> && is_expr_node_v<R>)
constexpr auto limes::expr::pow (L base, R exponent)
 
template<typename L , typename T >
requires (is_expr_node_v<L> && std::is_arithmetic_v<T>)
constexpr auto limes::expr::pow (L base, T exponent)
 
template<typename T , typename R >
requires (std::is_arithmetic_v<T> && is_expr_node_v<R>)
constexpr auto limes::expr::pow (T base, R exponent)
 
template<typename L , typename R >
requires (is_expr_node_v<L> && is_expr_node_v<R>)
constexpr auto limes::expr::max (L a, R b)
 
template<typename L , typename T >
requires (is_expr_node_v<L> && std::is_arithmetic_v<T>)
constexpr auto limes::expr::max (L a, T b)
 
template<typename T , typename R >
requires (std::is_arithmetic_v<T> && is_expr_node_v<R>)
constexpr auto limes::expr::max (T a, R b)
 
template<typename L , typename R >
requires (is_expr_node_v<L> && is_expr_node_v<R>)
constexpr auto limes::expr::min (L a, R b)
 
template<typename L , typename T >
requires (is_expr_node_v<L> && std::is_arithmetic_v<T>)
constexpr auto limes::expr::min (L a, T b)
 
template<typename T , typename R >
requires (std::is_arithmetic_v<T> && is_expr_node_v<R>)
constexpr auto limes::expr::min (T a, R b)
 

Variables

template<typename E >
constexpr bool limes::expr::is_binary_func_v = false
 
template<typename Tag , typename L , typename R >
constexpr bool limes::expr::is_binary_func_v< BinaryFunc< Tag, L, R > > = true
 
template<typename E >
constexpr bool limes::expr::is_runtime_pow_v = false
 
template<typename L , typename R >
constexpr bool limes::expr::is_runtime_pow_v< BinaryFunc< PowTag, L, R > > = true
 
template<typename E >
constexpr bool limes::expr::is_max_v = false
 
template<typename L , typename R >
constexpr bool limes::expr::is_max_v< BinaryFunc< MaxTag, L, R > > = true
 
template<typename E >
constexpr bool limes::expr::is_min_v = false
 
template<typename L , typename R >
constexpr bool limes::expr::is_min_v< BinaryFunc< MinTag, L, R > > = true