
From: David Abrahams <dave@boost-consulting.com>
Tobias Schwinger <tschwinger@neoscientists.org> writes:
F is undecorated \ F* is pointer decorated - free or static decoration ("wildcard") F& is reference decorated / C::*F is member-pointer-decorated
The reference shows this grouping, too. Unfortunately the "[/ FIXME: add link to reference ]" at the point where the "aspect tags" are introduced got lost (because I copied from the browser instead of my .qbk master file).
Okay, I understand. That said, the way you are classifying these things is going to cause confusion. There is no distinction between the types of static member functions and the types of free functions. There is only a distinction in how they are declared; once you are dealing with their types, they are the same thing. The name "free_or_static" carries the implication that you have precise (non-wildcard) tags "free" and "static". In my opinion, you should use the terms "member" and "nonmember." A pointer to a static member function is not a member pointer in the C++ type system; that's why my suggested terminology works. So "free_or_static" should be "nonmember."
No way. "Nonmember" precludes static member functions. They may have the same type as nonmember functions, and aren't represented with member function pointers, but they are still member functions. We've discussed "unbound," "free," and a couple of other names. We've also noticed the "or" being a problem, but haven't found a fully satisfactory replacement. I suggested having both "free" and "static" names for the same thing, but we didn't like the duplication. -- Rob Stewart stewart@sig.com Software Engineer http://www.sig.com Susquehanna International Group, LLP using std::disclaimer;