[Bug libstdc++/57043] New: converting overloaded complex function pow in C++11 is ambiguous
frederic.hecht at upmc dot fr
gcc-bugzilla@gcc.gnu.org
Tue Apr 23 10:17:00 GMT 2013
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57043
Bug #: 57043
Summary: converting overloaded complex function pow in C++11 is
ambiguous
Classification: Unclassified
Product: gcc
Version: 4.8.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
AssignedTo: unassigned@gcc.gnu.org
ReportedBy: frederic.hecht@upmc.fr
problem template the code is trivial 2 lines:
do not compile in version 4.9, 4.8.1 4.9 with
/usr/local/bin/g++ -v -save-temps -std=c++11 -c bugcc.cpp
the code:
#include <complex>
std::complex<double> (* powcc )( const std::complex<double> &, const
std::complex<double> &) =std::pow;
the output is
COLLECT_GCC_OPTIONS='-mmacosx-version-min=10.8.3' '-v' '-save-temps'
'-std=c++11' '-c' '-shared-libgcc' '-mtune=core2'
/usr/local/libexec/gcc/x86_64-apple-darwin12.3.0/4.8.1/cc1plus -fpreprocessed
bugcc.ii -fPIC -quiet -dumpbase bugcc.cpp -mmacosx-version-min=10.8.3
-mtune=core2 -auxbase bugcc -std=c++11 -version -o bugcc.s
GNU C++ (GCC) version 4.8.1 20130404 (prerelease) (x86_64-apple-darwin12.3.0)
compiled by GNU C version 4.8.1 20130404 (prerelease), GMP version 4.3.1,
MPFR version 2.4.1, MPC version 0.8.1
heuristiques GGC: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
GNU C++ (GCC) version 4.8.1 20130404 (prerelease) (x86_64-apple-darwin12.3.0)
compiled by GNU C version 4.8.1 20130404 (prerelease), GMP version 4.3.1,
MPFR version 2.4.1, MPC version 0.8.1
heuristiques GGC: --param ggc-min-expand=100 --param ggc-min-heapsize=131072
Compiler executable checksum: 848d439cd6121247863767d4caeedace
bugcc.cpp:2:100: erreur: converting overloaded function ‘pow’ to type ‘struct
std::complex<double> (*)(const struct std::complex<double>&, const struct
std::complex<double>&)’ is ambiguous
std::complex<double> (* powcc )( const std::complex<double> &, const
std::complex<double> &) =std::pow;
^
In file included from bugcc.cpp:1:0:
/usr/local/include/c++/4.8.1/complex:1023:5: note: candidats sont:
std::complex<_Tp> std::pow(const std::complex<_Tp>&, const std::complex<_Tp>&)
[with _Tp = double]
pow(const complex<_Tp>& __x, const complex<_Tp>& __y)
^
In file included from bugcc.cpp:1:0:
/usr/local/include/c++/4.8.1/complex:1871:5: note:
std::complex<typename __gnu_cxx::__promote_2<_Tp, _Up>::__type> std::pow(const
std::complex<_Tp>&, const std::complex<_Up>&) [with _Tp = double; _Up = double;
typename __gnu_cxx::__promote_2<_Tp, _Up>::__type = double]
pow(const std::complex<_Tp>& __x, const std::complex<_Up>& __y)
^
More information about the Gcc-bugs
mailing list