mi::base::numeric_traits<T> Struct Template Reference

Helper class to deduce properties of numeric types defined in this API. More...

`#include <types.h>`

Inheritance diagram for mi::base::numeric_traits<T>:

## Static Public Member Functions | |

static T() | min () throw () |

Returns the minimum finite value for `T` (and for floating point types the minimum positive value). More... | |

static T() | max () throw () |

Returns the maximum finite value for `T` . More... | |

static T | negative_max () throw () |

Returns the smallest finite negative value for `T` . More... | |

static T | infinity () throw () |

Returns an infinity value for `T` , if one exists, and `T()` otherwise. More... | |

static T | quiet_NaN () throw () |

Returns a quiet NaN value for `T` , if one exists, and `T()` otherwise. More... | |

static T | signaling_NaN () throw () |

Returns a signaling NaN value for `T` , if one exists, and `T()` otherwise. More... | |

## Static Public Attributes | |

static const bool | is_specialized = false |

Constant that is `true` if and only if this traits is specialized for `T` . More... | |

static const bool | has_infinity = false |

Constant that is `true` if and only if `T` has an infinity representation. More... | |

static const bool | has_quiet_NaN = false |

Constant that is `true` if and only if `T` has a quiet NaN (not-a-number) representation. More... | |

static const bool | has_signaling_NaN = false |

Constant that is `true` if and only if `T` has a signaling NaN (not-a-number) representation. More... | |

template<typename T>

struct mi::base::numeric_traits<T>

struct mi::base::numeric_traits<T>

Helper class to deduce properties of numeric types defined in this API.

This class can be used in generic code to deduce the limits and special values, such as a signaling NaN, for number types defined in this API, such as mi::Uint32 and mi::Float64.

The default template defines all members, see mi::base::numeric_traits_base, but with default constructed or `false`

values. It requires that a value of `T`

can be default constructed.

This traits class is similar to `std::numeric_limits<T>`

, and in case of overlap behaves in the same way.