[fusion] Qualification of 'at' and 'deref' in fusion (Ticket #4755)

I have just been bitten by a simple issue in fusion. The 'at' and 'deref' functions are used unqualified, which causes conflicts when mpl::at and mpl::deref are also visible. This issue has been reported as Ticket #4755 [1], and a patch was attached eight months ago. Is there anyone I can prod to get this fix committed? I have also updated the ticket with some relevant information. Thanks, -Gabe [1] https://svn.boost.org/trac/boost/ticket/4755

Gabriel Redner wrote:
I have just been bitten by a simple issue in fusion. The 'at' and 'deref' functions are used unqualified, which causes conflicts when mpl::at and mpl::deref are also visible. This issue has been reported as Ticket #4755 [1], and a patch was attached eight months ago. Is there anyone I can prod to get this fix committed?
I have also updated the ticket with some relevant information.
Hi, This is quite annoying. Does it means that every C++ header must use qualified symbols to avoid possible conflicts when the user introduces them via 'using'? Or that the user could not use the using statement in some cases? Best, Vicente -- View this message in context: http://boost.2283326.n4.nabble.com/fusion-Qualification-of-at-and-deref-in-f... Sent from the Boost - Dev mailing list archive at Nabble.com.

On 14/06/2011 23:08, Vicente Botet wrote:
This is quite annoying. Does it means that every C++ header must use qualified symbols to avoid possible conflicts
Welcome to ADL.
when the user introduces them via 'using'?
You don't need to use 'using' to run into this kind of trouble. boost::fusion::vector2< boost::mpl::int_<1>, boost::mpl::int_<2> > is enough to make everything ambiguous.

Mathias Gaunard-2 wrote:
On 14/06/2011 23:08, Vicente Botet wrote:
This is quite annoying. Does it means that every C++ header must use qualified symbols to avoid possible conflicts
Welcome to ADL.
I don't think the conflict is related to ADL, as the conflict is between a function and a class, isn't it?
when the user introduces them via 'using'?
You don't need to use 'using' to run into this kind of trouble.
boost::fusion::vector2< boost::mpl::int_<1>, boost::mpl::int_<2> > is enough to make everything ambiguous.
If the headers qualify any symbol, the preceding is not ambiguous. Of course, the user needs to be aware that there is a potential conflict for at and deref, and should also use qualification to avoid the conflicts. I'm missing something? Best, Vicente -- View this message in context: http://boost.2283326.n4.nabble.com/fusion-Qualification-of-at-and-deref-in-f... Sent from the Boost - Dev mailing list archive at Nabble.com.

On 15/06/2011 00:09, Vicente Botet wrote:
If the headers qualify any symbol, the preceding is not ambiguous. Of course, the user needs to be aware that there is a potential conflict for at and deref, and should also use qualification to avoid the conflicts.
I'm missing something?
The bug is that the fusion headers do not qualify the calls.
participants (3)
-
Gabriel Redner
-
Mathias Gaunard
-
Vicente Botet