|
Boost : |
Subject: Re: [boost] [XInt] review
From: Chad Nelson (chad.thecomfychair_at_[hidden])
Date: 2011-03-10 19:54:46
On Thu, 10 Mar 2011 13:08:32 -0800
Steven Watanabe <watanabesj_at_[hidden]> wrote:
>> That took care of that problem. Any comments on the others? The
>> second one seems important... I had to comment all three types out
>> of the mpl::vector to get it to even compile, once I fixed the
>> overloaded functions to only work on things that are integers. As
>> far as I can see, that makes those tests useless.
>
> Ah, I see. The test will only work if you disable the operators
> directly. [...]
That would be simpler than the work-around I used too. I've noted it for
future implementation.
>>>> Does fail_adl_detail.cpp compile on your system? It shouldn't, so
>>>> far as I can see, but on mine it does.
>>> It compiles for me too. This is one of my favorite tests which
>>> almost always fails unless you've thought about it.
>> Hang on... you're telling the main function to use the detail
>> namespace, where that function is. Wouldn't it be found directly
>> because of that, ignoring ADL?
>
> No. The using directive refers to the options namespace.
Yes, I realized my mistake this morning. Sorry about that.
>> After removing that using line (and modifying the options), it's
>> still being found though. It looks like it's because integer_t is
>> inheriting from things in the xint::detail namespace. As far as I
>> can see, that can't be eliminated without pulling more classes into
>> the xint namespace. Do you have a solution that wouldn't require
>> that?
>
> That's the solution I usually use. I just make sure that they don't
> show up in the documentation. Another option is to use an ADL barrier
> namespace. [...]
Nice.
> (On that note, it's generally a good idea to use (f)(x) or xint::f(x)
> instead of f(x) unless you intend f to be a customization point).
Sorry, you lost me. Would all function calls need that? If not, which
ones is it limited to?
-- Chad Nelson Oak Circle Software, Inc. * * *
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk