Hi Warren, On Mon, 2 May 2022, 03:29 Warren Weckesser via Boost-users, < boost-users@lists.boost.org> wrote:
In a program like this:
``` #include
using boost::math::beta_distribution;
int main() { float a = 1.5f; float b = 3.0f; beta_distribution<float> dist(a, b);
auto m = mean(dist); } ```
how does the name 'mean' end up in scope in 'main()'?
this is indeed a C++ question: what you are observing is called "argument dependent lookup". Since `dist` is of a type defined in the `boost::math::beta_distribution`, the compiler will look up `mean` in the same namespace, and finds a definition there. If you try using `mean` with a different argument the full namespace should be needed: ``` std::vector<double> v{1,2,3,4,5}; double mu = boost::math::statistics::mean(v); ``` For more information you can check https://en.cppreference.com/w/cpp/language/adl . Hope this helps, .Andrea