[Bug c++/31511] /usr/include/c++/bits/cmath.tcc: no match for ternary 'operator?:' in '((__n % 2u) != 0u) ? __x : 1'
bav dot 272304 at gmail dot com
gcc-bugzilla@gcc.gnu.org
Sun Apr 8 20:16:00 GMT 2007
------- Comment #2 from bav dot 272304 at gmail dot com 2007-04-08 21:16 -------
Code example:
============================================================
#include <complex>
template<typename T> class Wrapper {
T x_;
public:
Wrapper () throw () : x_(0) {}
Wrapper (const T& x) throw () : x_(x) {}
Wrapper operator* (const Wrapper& x) const throw () {
return Wrapper (x_*x.x_);
}
Wrapper operator/ (const Wrapper& x) const throw () {
return Wrapper (x_/x.x_);
}
Wrapper operator+ (const Wrapper& x) const throw () {
return Wrapper (x_+x.x_);
}
Wrapper operator- (const Wrapper& x) const throw () {
return Wrapper (x_-x.x_);
}
Wrapper operator- () const throw () {
return Wrapper (-x_);
}
~Wrapper () throw () {}
};
int main () {
std::complex <Wrapper<double> > x (Wrapper<double>(2.0));
std::pow (x, 23);
}
============================================================
OUTPUT:
debian:/# g++ bug.cpp --pedantic --std=c++98 -Wall
/usr/include/c++/3.3/bits/cmath.tcc: In function `_Tp std::__cmath_power(_Tp,
unsigned int) [with _Tp = std::complex<Wrapper<double> >]':
/usr/include/c++/3.3/cmath:477: instantiated from `_Tp std::__pow_helper(_Tp,
int) [with _Tp = std::complex<Wrapper<double> >]'
/usr/include/c++/3.3/complex:564: instantiated from `std::complex<_Tp>
std::pow(const std::complex<_Tp>&, int) [with _Tp = Wrapper<double>]'
bug.cpp:29: instantiated from here
/usr/include/c++/3.3/bits/cmath.tcc:42: error: no match for ternary
'operator?:' in '((__n % 2) != 0) ? __x : 1'
--
bav dot 272304 at gmail dot com changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |bav dot 272304 at gmail dot
| |com
Component|libstdc++ |c++
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31511
More information about the Gcc-bugs
mailing list