Re: [Math / Distributions] How do mean, variance, etc end up in scope?

Andrea Bocci via Boost-users <[email protected]>
Newsgroups gmane.comp.lib.boost.user
Message-ID <CAAK6D=66i7m_C7Vr8ni9P8Cus3R-t3f67Jdtr4MHgcMeEgHzqQ@mail.gmail.com>
Hi Warren,

On Mon, 2 May 2022, 03:29 Warren Weckesser via Boost-users, <
[email protected]> 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

>

_______________________________________________
Boost-users mailing list
[email protected]
https://lists.boost.org/mailman/listinfo.cgi/boost-users
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.