En el siguiente código, defino una función trivial log
. En main
intento no para llamarlo; Llamo al std::log
. Sin embargo, se llama mi propio log
; y veo "log!" en la pantalla. ¿Alguien sabe por qué? Uso G ++ 4.7 y clang ++ 3.2.¿Por qué mi log en el espacio de nombres estándar?
#include <iostream>
#include <cmath>
double log(const double x) { std::cout << "log!\n"; return x; }
int main(int argc, char *argv[])
{
std::log(3.14);
return 0;
}
suena como un error grave compilador ... – MFH
puedo reproducir este en g ++ 4.6 bajo MacPorts. Sin embargo, no ocurre en g ++ 4.2 o 4.4. – carlosdc
http://codepad.org/Uwhgrv7q http://codepad.org/z07Ctfyn Frome estos dos diría que la función std :: log() llama a log().pero luego debería generar un error/advertencia de que su archivo redefine el registro o algo así como t – Gir