Arithmetic Operation Result¶
#include <m3ta/arithmeticoperationresult>
Deduces the resulting type of an arithmetic operation between the given type elements.
The deduction follows a left-to-right associativity, meaning that a + b + c is evaluated as (a + b) + c.
Enumerators¶
- m3ta::ArithmeticOperator
enum class ArithmeticOperator { addition, subtraction, multiplication, division };
- addition
Addition operator +.
- subtraction
Subtraction operator -.
- multiplication
Multiplication operator *.
- division
Division operator /.
Traits¶
- m3ta::ArithmeticOperationResult
template<ArithmeticOperator T_operator, typename ... T_Values> struct ArithmeticOperationResult
Template Parameters: - T_operator – Operator to use for the check.
- T_Values – Variable number of types to check.
Member Types
- type
The resulting type of the arithmetic operation between the given type elements.
Aliases¶
- m3ta::ArithmeticOperationResultT
template<ArithmeticOperator T_operator, typename ... T_Values> using ArithmeticOperationResultT = typename ArithmeticOperationResult<T_operator, T_Values ...>::type;
- m3ta::AdditionResult
template<typename ... T_Values> using AdditionResult = ArithmeticOperationResult<ArithmeticOperator::addition, T_Values ...>;
- m3ta::AdditionResultT
template<typename ... T_Values> using AdditionResultT = typename AdditionResult<T_Values ...>::type;
- m3ta::SubtractionResult
template<typename ... T_Values> using SubtractionResult = ArithmeticOperationResult<ArithmeticOperator::subtraction, T_Values ...>;
- m3ta::SubtractionResultT
template<typename ... T_Values> using SubtractionResultT = typename SubtractionResult<T_Values ...>::type;
- m3ta::MultiplicationResult
template<typename ... T_Values> using MultiplicationResult = ArithmeticOperationResult<ArithmeticOperator::multiplication, T_Values ...>;
- m3ta::MultiplicationResultT
template<typename ... T_Values> using MultiplicationResultT = typename MultiplicationResult<T_Values ...>::type;
- m3ta::DivisionResult
template<typename ... T_Values> using DivisionResult = ArithmeticOperationResult<ArithmeticOperator::division, T_Values ...>;
- m3ta::DivisionResultT
template<typename ... T_Values> using DivisionResultT = typename DivisionResult<T_Values ...>::type;
Usage Examples¶
using Type1 = m3ta::AdditionResultT<char, short>; // int
using Type2 = m3ta::SubtractionResultT<int, float>; // float
using Type3 = m3ta::ArithmeticOperationResultT<
m3ta::ArithmeticOperator::multiplication,
float,
std::complex<float>
>; // std::complex<float>