Boost logo

Boost Users :

Subject: Re: [Boost-users] [Proto] POD expression can't be used in std::vector
From: Eric Niebler (eric_at_[hidden])
Date: 2008-11-23 14:40:41


Joel Falcou wrote:
> Eric Niebler a écrit :
>> Looks like the intel compiler has a bug with ADL. You can work around
>> it by changing the definition of cmplx to this:
>>
>> template<class T, typename Dummy = bp::is_proto_expr>
>> struct cmplx ...
>>
>> Note the extra Dummy template parameter, which will cause ADL to find
>> the operators defined in Proto's namespace.
>
> Perfect as usual :) This did the trick. I'll propagate this fix to all
> my terminal entity then.
> Should I report this to Intel bug system however ?

You should, if you (or someone) can confirm it happens on Intel 11.0
also. Here is a simple repro:

namespace N
{
     struct S {};
     template<class T, class U>
     void operator+(T const &, U const &) {}
}

template<class T> struct X {};
struct Y : X<N::S> {};

int main()
{
     Y y;
     y+y;
}

The above code compiles with gcc but doesn't with Intel 10.1

--
Eric Niebler
BoostPro Computing
www.boostpro.com

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net