I found a difference in clang++ vs g++ behavior when adding an overloaded function definition for something in the <cmath> library.
Specifically, in this program:
#include <cmath>
#include <iostream>
double cos(double x) throw();
int main() {
  std::cout << cos(1.0) << std::endl;
  return 0;
}
double cos(double x) throw() {
  return 10;
}
when I compile with clang++, it calls my overloaded version of cos and prints 10, but with g++ it calls the version in the math library and prints 0.540302.
Interestingly, g++ will also call my overloaded cos if I put the function definition (not just the prototype) before main.
Is there some unspecified behavior here, or a bug in one of these compilers? I can't figure out what the standard says should happen in this case.
I have tried this with multiple versions of both compilers and get the same behavior, with no warnings except that parameter x is unused.
