[Bug c++/58815] Casting/Conversion operator for std::decimal not supported
q1 at oxyba dot de
gcc-bugzilla@gcc.gnu.org
Tue Oct 22 17:43:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58815
--- Comment #11 from ulf <q1 at oxyba dot de> ---
i see evil implicit conversion.
i modified lines 254, 337 and 421 to
explicit operator long long() const { return (long long)__val; }
like suggested in n3407.
#include<decimal/decimal>
int main(){
std::decimal::decimal32 x(101.5051);
long long a = (long long)x; // OK
long long b = static_cast<long long>(x); // OK
//long long c = x; // error
//long d = (long)x; // error
//long e = static_cast<long>(x); // error
std::decimal::decimal64 y(101.5051);
long long f = (long long)y; // OK
long long g = static_cast<long long>(y); // OK
//long long h = y; // error
//long i = (long)y; // error
//long j = static_cast<long>(y); // error
std::decimal::decimal128 z(101.5051);
long long k = (long long)z; // OK
long long l = static_cast<long long>(z); // OK
//long long m = z; // error
//long n = (long)z; // error
//long o = static_cast<long>(z); // error
return 0;
}
some other issues regarding std::decimal
std::is_decimal_floating_point<std::decimal::decimalXXX> in type_traits
see page 7, chapter 3.11.1 and 2 (page 62) in
www.open-std.org/jtc1/sc22/open/n4112.pdf
std::numeric_limits<std::decimal::decimalXXX> in limits
see chapter 3.3 in
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2006/n1977.html
More information about the Gcc-bugs
mailing list