On 8/6/19 11:50 AM, Frédéric via Boost-users wrote:
I think that some rational constructors can be marked noexcept. In particular: - default constructor: rational() - constructor from integer: rational(const T& n, typename enable_if_c<...>::type const* = 0)
Careful: they would have to be conditionally noexcept to support multiprecision types which may throw on those operations (memory allocation).
Also, the safe numerics library uses boost rational to demonstrate the usage of safe numeric types as arguments to other "numeric" types. This is an example of a case where it makes sense for a type parameter to not be noexcept.
I see and the default constructor cannot use enable_if. The only possibility would be to have an additionnal bool template parameter is_pod<T> or has_nothrow_constructor<T>... Quite painful to implement.
F