Is there any trait in Boost that allows me to get the value of one for any numeric type?
What I'm looking for is something that would work like the following:
boost::numeric_traits<int>::one; // 1 boost::numeric_traits<long>::one; // 1L boost::numeric_traits<double>::one; // 1.0 boost::numeric_traits<float>::one; // 1.0f
And so on. Does it exist, or something equivalent? I've looked into NumericConversion, but I haven't quite found something similar. What I'm using now is something equivalent to the following:
template<class Number> Number one() { return Number(1); }
Maybe this is safe enough?
We have http://www.boost.org/doc/libs/1_55_0/libs/math/doc/html/constants.html But it doesn't cover integer constants: I came to the conclusion that any numeric type worth a damn would interoperate with basic integer values anyway, and what's more maybe in a more efficient manner than casting to a T would achieve (for example for many multiprecision types MT, multiplying by an integer is way more efficient than multiplying by an MT). John.