
On Fri, Nov 30, 2012 at 12:04 AM, Andrey Semashev <andrey.semashev@gmail.com
wrote:
On Fri, Nov 30, 2012 at 11:19 AM, Jeffrey Lee Hellrung, Jr. <jeffrey.hellrung@gmail.com> wrote:
On Thu, Nov 29, 2012 at 10:59 PM, Andrey Semashev < andrey.semashev@gmail.com
wrote:
On Thu, Nov 29, 2012 at 9:51 PM, Jeffrey Lee Hellrung, Jr. <jeffrey.hellrung@gmail.com> wrote:
On Thu, Nov 29, 2012 at 12:04 AM, Andrey Semashev < andrey.semashev@gmail.com
wrote:
My main point is that nullptr should "just work" (tm) by default.
But, it kinda doesn't "just work" if correct and robust use requires a conditional using declaration. And, at that point, what use is the "using boost::nullptr" at global scope anyway, if it's conditional on a configuration macro?
The config macro is only used to solve problems, should they arise. Other than that nullptr will work after simply including the header. And I'm sure in 99.9% of cases this will be the case.
Just to be clear, the conditional using declaration I was referring to is the one you suggested clients should use in their code, whereas you seem to be referring to the using declaration in the boost/utility/nullptr.hpp header. Is that right, and is my interpretation of your suggestion correct?
Yes, I was referring to the global using declaration in boost/utility/nullptr.hpp and the BOOST_NO_GLOBAL_NULLPTR config macro.
I have little concern about BOOST_USING_NULLPTR macro; I would probably use conditional using declaration in a public third party library anyway (I prefer explicitness of this solution).
Well either way, I reiterate my comment: If we have a conditional global-scope using declaration, I would imagine we would strongly recommend that client code likewise include a conditional using declaration (whether wrapped in a macro or explicitly expressed via #ifndef...#endif) so that things continue to "just work" whether the global-scope using declaration is enabled or not. On the other hand, requiring a user to just have a "BOOST_USING_NULLPTR;" declaration at the scope they wish to use the nullptr identifier seems safer (Boost doesn't inject anything into the global scope) and simpler / more uniform (no need for an additional configuration macro and explanation for why it's necessary and when one needs to concern oneself with it). - Jeff