Boost logo

Boost :

From: Joel de Guzman (djowel_at_[hidden])
Date: 2003-09-17 09:19:18


Peter Dimov <pdimov_at_[hidden]> wrote:
> Joel de Guzman wrote:
> [...]
>> g++ (3.2) complains:
>>
>> In function `int main()':
>> template<class C, class T1, class T2> struct boost::mpl::if_' is not
>> a function, conflict with `template<int N> void
> X::if_(boost::mpl::int_<N>)'
>> in call to `if_'
>>
>> VC7.1 is OK.
>>
>> This is, AFAICT, an ADL (Koenig-lookup) problem. Which is correct,
>> g++ or VC7.1?
>
> Depends on who you ask. My opinion is that VC 7.1 is correct. This is an
> open core issue.

I agree. How about this:

namespace X
{
    template <int N, typename T = boost::mpl::int_<N> >
    struct Y {};

    template <int N>
    void
    if_(Y<N>)
    {
    };
}

int
main()
{
    using namespace X;
    if_(Y<1>());
}

??? definitely a bug ???

Thanks!

-- 
Joel de Guzman
http://www.boost-consulting.com
http://spirit.sf.net

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk