Subject: [Boost-bugs] [Boost C++ Libraries] #13346: SFINAE-friendly range_value
From: Boost C++ Libraries (noreply_at_[hidden])
Date: 2017-12-17 19:53:47
#13346: SFINAE-friendly range_value
------------------------------+-------------------------
Reporter: marc.glisse@⦠| Owner: Neil Groves
Type: Feature Requests | Status: new
Milestone: To Be Determined | Component: range
Version: Boost 1.62.0 | Severity: Problem
Keywords: sfinae |
------------------------------+-------------------------
This code compiles:
{{{
#include <boost/range/value_type.hpp>
#include <utility>
#include <iterator>
template<class T>
void f(std::pair<T,T>){}
template<class T>
auto f(T) -> typename std::iterator_traits<typename
boost::range_iterator<T>::type>::value_type {}
int main(){
std::pair<int,int> p;
f(p);
}
}}}
However, if I change the return type to the more readable `typename
boost::range_value<T>::type`, it now fails to compile because the broken
typedef in iterator_value is not in the immediate context. The standard
noticed that this was useful and made iterator_traits SFINAE-friendly, it
would be nice if boost could do the same for the various range meta-
functions.
-- Ticket URL: <https://svn.boost.org/trac10/boost/ticket/13346> Boost C++ Libraries <http://www.boost.org/> Boost provides free peer-reviewed portable C++ source libraries.
This archive was generated by hypermail 2.1.7 : 2017-12-17 20:00:31 UTC