1// Boost.Range library
2//
3// Copyright Neil Groves 2014. Use, modification and
4// distribution is subject to the Boost Software License, Version
5// 1.0. (See accompanying file LICENSE_1_0.txt or copy at
6// http://www.boost.org/LICENSE_1_0.txt)
7//
8//
9// For more information, see http://www.boost.org/libs/range/
10//
11// As reported in https://groups.google.com/forum/#!msg/boost-developers-archive/6JVNg7ZPb4k/RAlvPUec4MAJ
12
13#include <boost/range/iterator_range_core.hpp>
14#include <boost/lambda/lambda.hpp>
15#include <boost/algorithm/string.hpp>
16
17namespace boost
18{
19 enum {unnamed};
20 struct S {
21 bool operator<(int) const {return false;}
22 bool operator==(int) const {return false;}
23 };
24 template<typename T>
25 bool foo(T i)
26 {
27 return i < unnamed || i == unnamed;
28 }
29}
30
31int main()
32{
33 using boost::lambda::_1;
34 (void)(_1 == 42);
35 (void)(42 == _1);
36
37 boost::foo(i: 42);
38 boost::foo(i: boost::S());
39}
40

source code of boost/libs/range/test/iterator_range_equality_bug.cpp