dividesValue - HaxyM/crap GitHub Wiki

crap :: dividesValue

Defined in "crap/functional.d/dividesvalue.h".
Defined in "crap/functional".


template <class Type, Type ... Values> struct dividesValue;

Returns division of Values... in order of their appearance. If Values... is empty, this operator is not defined.

Template parameters

  • Type - type of values to operate on.
  • Values... - set of values to operate on. If this set is empty whole operation is not defined. If set is single element then whole operation is evaluated to that element.

Layout

Member constants

value - holds result of operation. If Values... is single element, value holds that element.

Member types

value_type - type of field value. May not be Type but should be castable to this type.

Member functions

constexpr operator value_type () const noexcept - casts whole object to its value_type returning value.

Usage example

#include <crap/functional.d/dividesvalue.h>

int main()
{
 static_assert(crap :: dividesValue<unsigned int, 42u>{} == 42u, "42 should be 42");
 static_assert(crap :: dividesValue<unsigned int, 42u, 42u>{} == 1u, "42 / 42 should be 1");
 static_assert(crap :: dividesValue<unsigned int, 42u, 6u>{} == 7u, "42 / 6 should be 7");
 static_assert(crap :: dividesValue<unsigned int, 42u, 101u>{} == (42u / 101u), "42 / 101 should be 0");
 static_assert(crap :: dividesValue<unsigned int, 42u, 6u, 3u>{} == ((42u / 6u) / 3u),
 "42 / 6 / 3 should be 2");
 static_assert(crap :: dividesValue<unsigned int, 85u, 2u, 7u, 3u, 2u>{} == ((((85u / 2u) / 7u) / 3u) / 2u),
 " 85 / 2 is 42 so rest should be 1");
 return 0;
}

See also