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