It is known problem with GNU ISO C++ Library math implementation by Gabriel Dos Reis.
g++ compiler says something like this: /usr/include/c++/bits/cmath.tcc:41: error: no match for ternary 'operator?:' in '((__n % 2u) != 0u) ? __x : 1' It could be fixed by replacing the certain line at the cmath.tcc file _Tp __y = __n % 2 ? __x : 1; with more correct _Tp __y = __n % 2 ? __x : _Tp(1); (see cmath.tcc for details) To reproduce error, try to pass to std::pow() std::complex<T> object where T isn't primitive type but some class with arithmetic operators overloaded. I found it in g++ 3.3.5, g++ 4.0.0, etc. -- Summary: /usr/include/c++/bits/cmath.tcc: no match for ternary 'operator?:' in '((__n % 2u) != 0u) ? __x : 1' Product: gcc Version: 4.0.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassigned at gcc dot gnu dot org ReportedBy: bav dot 272304 at gmail dot com http://gcc.gnu.org/bugzilla/show_bug.cgi?id=31511