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