http://gcc.gnu.org/bugzilla/show_bug.cgi?id=51083
Bug #: 51083
Summary: gnu++0x: resolving overloaded functions belonging to
different namespaces
Classification: Unclassified
Product: gcc
Version: 4.6.2
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c++
AssignedTo: [email protected]
ReportedBy: [email protected]
Hi,
I'm using gcc 4.6.2 on Mac OS 10.6.
When using the gnu++0x flag gcc fails to compile the attached (preprocessed)
source, otherwise everything works as expected.
I am using a math library called 'armadillo' which overloads functions already
present in namespace std, eg std::imag() and arma::imag().
As long as one specifies the namespace explicitly the code compiles. However,
the following does not work:
using namespace std;
using namespace arma;
imag(std::foo);
imag(arma::bar); // <- compile error
I call the compiler with the following commands:
g++-mp-4.6 -I/usr/local/include -O0 -g3 -Wall -c -fmessage-length=0
-std=gnu++0x -fno-strict-aliasing -fwrapv -save-temps -MMD -MP -MF"main.d"
-MT"main.d" -o "main.o" "../main.cpp"
The error message:
error: conversion from '__gnu_cxx::__promote<arma::Mat<std::complex<double> >,
false>::__type {aka arma::Mat<std::complex<double> >}' to non-scalar type
'arma::mat {aka arma::Mat<double>}' requested