Opened 11 years ago
Closed 10 years ago
#6357 closed Bugs (fixed)
Resolve ambiguity for unqualified call to begin/end
| Reported by: | Thomas Heller | Owned by: | Thomas Heller |
|---|---|---|---|
| Milestone: | To Be Determined | Component: | phoenix |
| Version: | Boost 1.48.0 | Severity: | Problem |
| Keywords: | Cc: |
Description
On 12/16/2011 10:44 AM, Nathan Ridge wrote:
Hello,
I am running into a problem where an unqualified call to begin() on a range type whose template parameters include a Boost.Phoenix type (for examle filtered_range<Pred, R> where Pred is a phoenix function) is ambiguous because, in addition to the intended std::begin, phoenix::begin is being found by ADL.
What can be done about this? There exists precedent for placing boost::xxx::begin/end functions in ADL barrier namespaces because C++11 encourages unqualified calls to begin/end (specifically, this was done for boost::range::begin/end). Should the same thing be done for Phoenix?
Here is a minimal example that reproduces the problem:
#include<iterator>
#include<boost/range/adaptor/filtered.hpp>
#include<boost/phoenix/phoenix.hpp>
using std::begin;
{{{
int main()
{
using boost::phoenix::arg_names::arg1;
using boost::adaptors::filtered;
int v[5];
const auto& f = v | filtered(arg1< 0);
begin(f);
}
}}}
Change History (2)
comment:1 by , 11 years ago
comment:2 by , 10 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |

Fix in Ticket #6360