I'm having trouble understanding C ++ namespaces. Consider the following example:
//distr.h namespace bogus{ extern const int x; extern const int y; double made_up_distr(unsigned param); }
Now, if I define my variables like cpp below everything compiles fine
//distr.cpp #include "distr.h" #include <cmath> const int bogus::x = 10; const int bogus::y = 100; double bogus::made_up_distr(unsigned param){ auto pdf = (exp(param) / bogus::x) + bogus::y; return pdf; }
But if I try to just enter the bogus namespace and use instead
//broken distr.cpp #include "distr.h" #include <cmath> using namespace bogus; const int x = 10; const int y = 100; double made_up_distr(unsigned param){ auto pdf = (exp(param) / x) + y; return pdf; }
My compiler tells me that the reference to x and y ambiguous. Why is this?
source share