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 <boost/math/distributions/beta.hpp>

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