on Tue Mar 27 2012, Jeremiah Willcock <jewillco-AT-osl.iu.edu> wrote:
On Tue, 27 Mar 2012, Robert Jones wrote:
Hi Peeps Can anyone cast any light on this...
I want to write function which accepts a single pass range of X's, so something like this
struct X { };
template <typename T> BOOST_CONCEPT_REQUIRES( (( boost::SinglePassRangeConcept<T> )), ( typename boost::enable_if<boost::is_same<typename boost::range_value<T>::type, X>, void>::type )) my_function( const T & range );
Is that a reasonable construction, or is there a better way to say it?
Next, it doesn't seem to work. It does seem to work if the type to which enable_if resolves is anything except void, but not for void. Why is this?
Does it only fail if you try to pass something in that is not a range? I'm not sure that BOOST_CONCEPT_REQUIRES does SFINAE, but if it does,
It doesn't. -- Dave Abrahams BoostPro Computing http://www.boostpro.com