ericniebler / range-v3

Range library for C++14/17/20, basis for C++20's std::ranges
Other
4.14k stars 439 forks source link

Add deduction guides when the compiler supports them, like in the draft C++20 standard #1114

Closed JeffGarland closed 5 years ago

JeffGarland commented 5 years ago

From the post-kona working paper (N4810) I believe the following should be valid code. However it fails to compile unless an explicit ref_view is added to convert the vector to a view before applying transform (see successful option below which compiles and runs correctly). Same behavior on gcc8.3 and late march gcc trunk compile with -std=c++2a or c++17. The compile error here indicates ViewableRange while N4810 says the following:

template<InputRange V, CopyConstructible F> requires View && is_object_v && RegularInvocable<F&, iter_reference_t<iterator_t>> class transform_view;

My understanding is that std::vector is not a view, so this compile error seems correct -- which would imply the example in range.transform.overview is not correct.


include <range/v3/all.hpp>

include

include

using std::cout, std::vector;

int main() { vector vi{ 0, 1, 2, 3, 4, 5 };

//successful option // ranges::transform_view times_ten{ranges::ref_view{vi}, [](int i) { return i 10; } }; ranges::transform_view times_ten{ vi, [](int i) { return i 10; } };

for (int i : times_ten) { cout << i << ' '; // 0 10 20 30 40 50 } cout << "\n"; }

-- mode: compilation; default-directory: "~/dev/cpp_experiment/cpp20/range/error/" -- Compilation started at Sat Mar 30 18:30:26

/home/jeff/devtools/gcc83/install/usr/local/bin/g++ 010_transform_view.cpp -I ~/devtools/range_v3_beta1/range-v3/include -std=c++2a In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20, from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19, from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17, from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17, from 010_transform_view.cpp:3: /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp: In instantiation of ‘struct ranges::view_adaptor<ranges::iter_transform_view<std::vector, ranges::indirected<main()::<lambda(int)> > >, std::vector, (ranges::cardinality)-1>’: /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/transform.hpp:94:12: required from ‘struct ranges::iter_transform_view<std::vector, ranges::indirected<main()::<lambda(int)> > >’ /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/transform.hpp:180:12: required from ‘struct ranges::transform_view<std::vector, main()::<lambda(int)> >’ 010_transform_view.cpp:17:70: required from here /home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:130:19: error: static assertion failed: Concept assertion failed : ViewableRange static_assert(static_cast(__VA_ARGS__), \ ^~~~~~~~~~ /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:413:9: note: in expansion of macro ‘CPP_assert’ CPP_assert(ViewableRange); ^~~~~~ In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:26, from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23, from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17, from 010_transform_view.cpp:3: /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp: In substitution of ‘template using all_t = decltype (ranges::view::all(declval())) [with Rng = std::vector]’: /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:414:50: required from ‘struct ranges::view_adaptor<ranges::iter_transform_view<std::vector, ranges::indirected<main()::<lambda(int)> > >, std::vector, (ranges::cardinality)-1>’ /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/transform.hpp:94:12: required from ‘struct ranges::iter_transform_view<std::vector, ranges::indirected<main()::<lambda(int)> > >’ /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/transform.hpp:180:12: required from ‘struct ranges::transform_view<std::vector, main()::<lambda(int)> >’ 010_transform_view.cpp:17:70: required from here /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:86:35: error: no match for call to ‘(const ranges::view::all_fn) (std::vector)’ using all_t = decltype(all(std::declval()));


In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:61:26: note: candidate: ‘template<class T> auto ranges::view::all_fn::operator()(T&&, concepts::detail::enable_if_t<concepts::detail::Nil, (static_cast<bool>(ViewableRange<T>) || concepts::detail::CPP_false(concepts::detail::Nil{}))>) const’
             auto CPP_fun(operator())(T &&t) (const
                          ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:606:20: note: in definition of macro ‘CPP_fun’
 #define CPP_fun(X) X CPP_FUN_IMPL_1_
                    ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:61:26: note:   template argument deduction/substitution failed:
             auto CPP_fun(operator())(T &&t) (const
                          ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:606:20: note: in definition of macro ‘CPP_fun’
 #define CPP_fun(X) X CPP_FUN_IMPL_1_
                    ^
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:26,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:73:18: note: candidate: ‘template<class T> concepts::detail::enable_if_t<ranges::ref_view<T>, (static_cast<bool>(Range<T&>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view::all_fn::operator()(std::reference_wrapper<_Tp>) const’
             auto operator()(std::reference_wrapper<T> ref) const ->
                  ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:73:18: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:86:35: note:   ‘std::vector<int>’ is not derived from ‘std::reference_wrapper<_Tp>’
         using all_t = decltype(all(std::declval<Rng>()));
                                ~~~^~~~~~~~~~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp: In instantiation of ‘struct ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/transform.hpp:94:12:   required from ‘struct ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >’
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/transform.hpp:180:12:   required from ‘struct ranges::transform_view<std::vector<int>, main()::<lambda(int)> >’
010_transform_view.cpp:17:70:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:86:35: error: no match for call to ‘(const ranges::view::all_fn) (std::vector<int>)’
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:61:26: note: candidate: ‘template<class T> auto ranges::view::all_fn::operator()(T&&, concepts::detail::enable_if_t<concepts::detail::Nil, (static_cast<bool>(ViewableRange<T>) || concepts::detail::CPP_false(concepts::detail::Nil{}))>) const’
             auto CPP_fun(operator())(T &&t) (const
                          ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:606:20: note: in definition of macro ‘CPP_fun’
 #define CPP_fun(X) X CPP_FUN_IMPL_1_
                    ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:61:26: note:   template argument deduction/substitution failed:
             auto CPP_fun(operator())(T &&t) (const
                          ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:606:20: note: in definition of macro ‘CPP_fun’
 #define CPP_fun(X) X CPP_FUN_IMPL_1_
                    ^
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:26,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:73:18: note: candidate: ‘template<class T> concepts::detail::enable_if_t<ranges::ref_view<T>, (static_cast<bool>(Range<T&>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view::all_fn::operator()(std::reference_wrapper<_Tp>) const’
             auto operator()(std::reference_wrapper<T> ref) const ->
                  ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:73:18: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:86:35: note:   ‘std::vector<int>’ is not derived from ‘std::reference_wrapper<_Tp>’
         using all_t = decltype(all(std::declval<Rng>()));
                                ~~~^~~~~~~~~~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:86:35: error: no match for call to ‘(const ranges::view::all_fn) (std::vector<int>)’
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:61:26: note: candidate: ‘template<class T> auto ranges::view::all_fn::operator()(T&&, concepts::detail::enable_if_t<concepts::detail::Nil, (static_cast<bool>(ViewableRange<T>) || concepts::detail::CPP_false(concepts::detail::Nil{}))>) const’
             auto CPP_fun(operator())(T &&t) (const
                          ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:606:20: note: in definition of macro ‘CPP_fun’
 #define CPP_fun(X) X CPP_FUN_IMPL_1_
                    ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:61:26: note:   template argument deduction/substitution failed:
             auto CPP_fun(operator())(T &&t) (const
                          ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:606:20: note: in definition of macro ‘CPP_fun’
 #define CPP_fun(X) X CPP_FUN_IMPL_1_
                    ^
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:26,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:73:18: note: candidate: ‘template<class T> concepts::detail::enable_if_t<ranges::ref_view<T>, (static_cast<bool>(Range<T&>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view::all_fn::operator()(std::reference_wrapper<_Tp>) const’
             auto operator()(std::reference_wrapper<T> ref) const ->
                  ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:73:18: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:86:35: note:   ‘std::vector<int>’ is not derived from ‘std::reference_wrapper<_Tp>’
         using all_t = decltype(all(std::declval<Rng>()));
                                ~~~^~~~~~~~~~~~~~~~~~~~~
010_transform_view.cpp: In function ‘int main()’:
010_transform_view.cpp:19:16: error: no matching function for call to ‘ranges::transform_view<std::vector<int>, main()::<lambda(int)> >::begin()’
   for (int i : times_ten)
                ^~~~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:22,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:91:14: note: candidate: ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<D&>()))>::type>, (static_cast<bool>(Same<D, Derived>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<Derived, C>::begin() [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto begin() ->
              ^~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:91:14: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp: In substitution of ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type>, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::begin<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64: error: no matching function for call to ‘ranges::range_access::begin_cursor(ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&)’
             detail::decay_t<decltype(range_access::begin_cursor(std::declval<Derived &>()))>;
                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: note: candidate: ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&)’
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: note:   template argument deduction/substitution failed:
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp: In substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type>, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::begin<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: error: no matching function for call to ‘ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >::begin_cursor()’
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:440:14: note: candidate: ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(declval<D&>())), (static_cast<bool>(Same<D, Derived>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor() [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto begin_cursor()
              ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:440:14: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp: In substitution of ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_<D>(declval<D&>())), (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:41:   required by substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type>, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::begin<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:442:57: error: no matching function for call to ‘ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_(ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&)’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D &>())))(
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:463:37: note: in definition of macro ‘CPP_broken_friend_ret’
     ::concepts::detail::enable_if_t<__VA_ARGS__,                                \
                                     ^~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:442:13: note: in expansion of macro ‘CPP_ret’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D &>())))(
             ^~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note: candidate: ‘template<class D> static constexpr ranges::adaptor_cursor_t<D> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(D&) [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         static constexpr /*c++14*/ adaptor_cursor_t<D> begin_cursor_(D &d)
                                                        ^~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp: In substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type>, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::begin<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:449:14: note: candidate: ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(declval<const D&>())), (static_cast<bool>((Same<D, Derived> && Range<decltype (ranges::view::all(declval<BaseRng>()))>)) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor() const [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto begin_cursor() const
              ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:449:14: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp: In substitution of ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_<D>(declval<const D&>())), (static_cast<bool>((Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > > && <expression error>)) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:41:   required by substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type>, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::begin<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:451:57: error: no matching function for call to ‘ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_(const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&) const’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D const &>())))(
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:463:37: note: in definition of macro ‘CPP_broken_friend_ret’
     ::concepts::detail::enable_if_t<__VA_ARGS__,                                \
                                     ^~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:451:13: note: in expansion of macro ‘CPP_ret’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D const &>())))(
             ^~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note: candidate: ‘template<class D> static constexpr ranges::adaptor_cursor_t<D> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(D&) [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         static constexpr /*c++14*/ adaptor_cursor_t<D> begin_cursor_(D &d)
                                                        ^~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:22,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:100:14: note: candidate: ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, (static_cast<bool>(Same<D, Derived>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<Derived, C>::begin() const [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto begin() const ->
              ^~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:100:14: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp: In substitution of ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::begin<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64: error: no matching function for call to ‘ranges::range_access::begin_cursor(const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&)’
             detail::decay_t<decltype(range_access::begin_cursor(std::declval<Derived &>()))>;
                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: note: candidate: ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&)’
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: note:   template argument deduction/substitution failed:
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp: In substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::begin<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: error: no matching function for call to ‘ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >::begin_cursor() const’
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:440:14: note: candidate: ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(declval<D&>())), (static_cast<bool>(Same<D, Derived>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor() [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto begin_cursor()
              ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:440:14: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp: In substitution of ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_<D>(declval<D&>())), (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:41:   required by substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::begin<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:442:57: error: no matching function for call to ‘ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_(ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&)’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D &>())))(
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:463:37: note: in definition of macro ‘CPP_broken_friend_ret’
     ::concepts::detail::enable_if_t<__VA_ARGS__,                                \
                                     ^~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:442:13: note: in expansion of macro ‘CPP_ret’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D &>())))(
             ^~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note: candidate: ‘template<class D> static constexpr ranges::adaptor_cursor_t<D> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(D&) [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         static constexpr /*c++14*/ adaptor_cursor_t<D> begin_cursor_(D &d)
                                                        ^~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp: In substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::begin<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:449:14: note: candidate: ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(declval<const D&>())), (static_cast<bool>((Same<D, Derived> && Range<decltype (ranges::view::all(declval<BaseRng>()))>)) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor() const [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto begin_cursor() const
              ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:449:14: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp: In substitution of ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_<D>(declval<const D&>())), (static_cast<bool>((Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > > && <expression error>)) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:41:   required by substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::begin<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:451:57: error: no matching function for call to ‘ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_(const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&) const’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D const &>())))(
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:463:37: note: in definition of macro ‘CPP_broken_friend_ret’
     ::concepts::detail::enable_if_t<__VA_ARGS__,                                \
                                     ^~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:451:13: note: in expansion of macro ‘CPP_ret’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D const &>())))(
             ^~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note: candidate: ‘template<class D> static constexpr ranges::adaptor_cursor_t<D> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(D&) [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         static constexpr /*c++14*/ adaptor_cursor_t<D> begin_cursor_(D &d)
                                                        ^~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note:   template argument deduction/substitution failed:
010_transform_view.cpp:19:16: error: no matching function for call to ‘ranges::transform_view<std::vector<int>, main()::<lambda(int)> >::end()’
   for (int i : times_ten)
                ^~~~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:22,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:114:14: note: candidate: ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<D&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<D&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<D&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<D&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, Derived>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<Derived, C>::end() [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto end() ->
              ^~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:114:14: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp: In substitution of ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<Derived&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<Derived&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::end<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64: error: no matching function for call to ‘ranges::range_access::begin_cursor(ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&)’
             detail::decay_t<decltype(range_access::begin_cursor(std::declval<Derived &>()))>;
                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: note: candidate: ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&)’
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: note:   template argument deduction/substitution failed:
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp: In substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<Derived&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<Derived&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::end<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: error: no matching function for call to ‘ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >::begin_cursor()’
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:440:14: note: candidate: ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(declval<D&>())), (static_cast<bool>(Same<D, Derived>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor() [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto begin_cursor()
              ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:440:14: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp: In substitution of ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_<D>(declval<D&>())), (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:41:   required by substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<Derived&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<Derived&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::end<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:442:57: error: no matching function for call to ‘ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_(ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&)’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D &>())))(
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:463:37: note: in definition of macro ‘CPP_broken_friend_ret’
     ::concepts::detail::enable_if_t<__VA_ARGS__,                                \
                                     ^~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:442:13: note: in expansion of macro ‘CPP_ret’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D &>())))(
             ^~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note: candidate: ‘template<class D> static constexpr ranges::adaptor_cursor_t<D> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(D&) [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         static constexpr /*c++14*/ adaptor_cursor_t<D> begin_cursor_(D &d)
                                                        ^~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp: In substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<Derived&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<Derived&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::end<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:449:14: note: candidate: ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(declval<const D&>())), (static_cast<bool>((Same<D, Derived> && Range<decltype (ranges::view::all(declval<BaseRng>()))>)) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor() const [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto begin_cursor() const
              ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:449:14: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp: In substitution of ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_<D>(declval<const D&>())), (static_cast<bool>((Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > > && <expression error>)) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:41:   required by substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<Derived&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<Derived&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<Derived&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::end<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:451:57: error: no matching function for call to ‘ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_(const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&) const’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D const &>())))(
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:463:37: note: in definition of macro ‘CPP_broken_friend_ret’
     ::concepts::detail::enable_if_t<__VA_ARGS__,                                \
                                     ^~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:451:13: note: in expansion of macro ‘CPP_ret’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D const &>())))(
             ^~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note: candidate: ‘template<class D> static constexpr ranges::adaptor_cursor_t<D> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(D&) [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         static constexpr /*c++14*/ adaptor_cursor_t<D> begin_cursor_(D &d)
                                                        ^~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:22,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:123:14: note: candidate: ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, Derived>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<Derived, C>::end() const [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto end() const ->
              ^~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:123:14: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp: In substitution of ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::end<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64: error: no matching function for call to ‘ranges::range_access::begin_cursor(const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&)’
             detail::decay_t<decltype(range_access::begin_cursor(std::declval<Derived &>()))>;
                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: note: candidate: ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&)’
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: note:   template argument deduction/substitution failed:
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp: In substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::end<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:54: error: no matching function for call to ‘ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >::begin_cursor() const’
         static constexpr /*c++14*/ auto CPP_auto_fun(begin_cursor)(Rng &rng)
                                                      ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:617:25: note: in definition of macro ‘CPP_auto_fun’
 #define CPP_auto_fun(X) X CPP_AUTO_FUN_IMPL_
                         ^
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:440:14: note: candidate: ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(declval<D&>())), (static_cast<bool>(Same<D, Derived>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor() [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto begin_cursor()
              ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:440:14: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp: In substitution of ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_<D>(declval<D&>())), (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor<D>() [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:41:   required by substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::end<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:442:57: error: no matching function for call to ‘ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_(ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&)’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D &>())))(
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:463:37: note: in definition of macro ‘CPP_broken_friend_ret’
     ::concepts::detail::enable_if_t<__VA_ARGS__,                                \
                                     ^~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:442:13: note: in expansion of macro ‘CPP_ret’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D &>())))(
             ^~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note: candidate: ‘template<class D> static constexpr ranges::adaptor_cursor_t<D> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(D&) [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         static constexpr /*c++14*/ adaptor_cursor_t<D> begin_cursor_(D &d)
                                                        ^~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp: In substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::end<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:449:14: note: candidate: ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(declval<const D&>())), (static_cast<bool>((Same<D, Derived> && Range<decltype (ranges::view::all(declval<BaseRng>()))>)) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor() const [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         auto begin_cursor() const
              ^~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:449:14: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp: In substitution of ‘template<class D> constexpr concepts::detail::enable_if_t<decltype (ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_<D>(declval<const D&>())), (static_cast<bool>((Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > > && <expression error>)) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/detail/range_access.hpp:76:41:   required by substitution of ‘template<class Rng> static constexpr decltype (rng.begin_cursor()) ranges::range_access::begin_cursor(Rng&) [with Rng = const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/facade.hpp:33:64:   required by substitution of ‘template<class D> concepts::detail::enable_if_t<typename meta::detail::_if_<meta::list<std::integral_constant<bool, Same<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type> >, ranges::basic_iterator<typename std::decay<decltype (ranges::range_access::begin_cursor(declval<const D&>()))>::type>, typename std::decay<decltype (ranges::range_access::end_cursor(declval<const D&>()))>::type>, std::integral_constant<bool, true> >::type, (static_cast<bool>(Same<D, ranges::iter_transform_view<std::vector<int, std::allocator<int> >, ranges::indirected<main()::<lambda(int)> > > >) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view_facade<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, (ranges::cardinality)-1>::end<D>() const [with D = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >]’
010_transform_view.cpp:19:16:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:451:57: error: no matching function for call to ‘ranges::view_adaptor<ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >, std::vector<int>, (ranges::cardinality)-1>::begin_cursor_(const ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >&) const’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D const &>())))(
                              ~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:463:37: note: in definition of macro ‘CPP_broken_friend_ret’
     ::concepts::detail::enable_if_t<__VA_ARGS__,                                \
                                     ^~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:451:13: note: in expansion of macro ‘CPP_ret’
             CPP_ret(decltype(view_adaptor::begin_cursor_(std::declval<D const &>())))(
             ^~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note: candidate: ‘template<class D> static constexpr ranges::adaptor_cursor_t<D> ranges::view_adaptor<Derived, BaseRng, C>::begin_cursor_(D&) [with D = D; Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’
         static constexpr /*c++14*/ adaptor_cursor_t<D> begin_cursor_(D &d)
                                                        ^~~~~~~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:429:56: note:   template argument deduction/substitution failed:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp: In instantiation of ‘constexpr ranges::view_adaptor<Derived, BaseRng, C>::view_adaptor(BaseRng&&) [with Derived = ranges::iter_transform_view<std::vector<int>, ranges::indirected<main()::<lambda(int)> > >; BaseRng = std::vector<int>; ranges::cardinality Cardinality = (ranges::cardinality)-1]’:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/transform.hpp:163:32:   required from ‘ranges::iter_transform_view<Rng, Fun>::iter_transform_view(Rng, Fun) [with Rng = std::vector<int>; Fun = ranges::indirected<main()::<lambda(int)> >]’
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/transform.hpp:186:41:   required from ‘ranges::transform_view<Rng, Fun>::transform_view(Rng, Fun) [with Rng = std::vector<int>; Fun = main()::<lambda(int)>]’
010_transform_view.cpp:17:70:   required from here
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:494:57: error: using invalid field ‘ranges::view_adaptor<Derived, BaseRng, C>::rng_’
           : rng_(view::all(static_cast<BaseRng &&>(rng)))
                                                         ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:494:27: error: no match for call to ‘(const ranges::view::all_fn) (std::vector<int>)’
           : rng_(view::all(static_cast<BaseRng &&>(rng)))
                  ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/concepts.hpp:20,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/iterator/operations.hpp:19,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:17,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:61:26: note: candidate: ‘template<class T> auto ranges::view::all_fn::operator()(T&&, concepts::detail::enable_if_t<concepts::detail::Nil, (static_cast<bool>(ViewableRange<T>) || concepts::detail::CPP_false(concepts::detail::Nil{}))>) const’
             auto CPP_fun(operator())(T &&t) (const
                          ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:606:20: note: in definition of macro ‘CPP_fun’
 #define CPP_fun(X) X CPP_FUN_IMPL_1_
                    ^
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:61:26: note:   template argument deduction/substitution failed:
             auto CPP_fun(operator())(T &&t) (const
                          ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/concepts/concepts.hpp:606:20: note: in definition of macro ‘CPP_fun’
 #define CPP_fun(X) X CPP_FUN_IMPL_1_
                    ^
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:26,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:73:18: note: candidate: ‘template<class T> concepts::detail::enable_if_t<ranges::ref_view<T>, (static_cast<bool>(Range<T&>) || concepts::detail::CPP_false(concepts::detail::Nil{}))> ranges::view::all_fn::operator()(std::reference_wrapper<_Tp>) const’
             auto operator()(std::reference_wrapper<T> ref) const ->
                  ^~~~~~~~
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/all.hpp:73:18: note:   template argument deduction/substitution failed:
In file included from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/core.hpp:23,
                 from /home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/all.hpp:17,
                 from 010_transform_view.cpp:3:
/home/jeff/devtools/range_v3_beta1/range-v3/include/range/v3/view/adaptor.hpp:494:27: note:   ‘std::vector<int>’ is not derived from ‘std::reference_wrapper<_Tp>’
           : rng_(view::all(static_cast<BaseRng &&>(rng)))
                  ~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Compilation exited abnormally with code 1 at Sat Mar 30 18:30:29
JeffGarland commented 5 years ago

Additional information. filter_view exhibits the same compile error -- needs an explicit injection of ref_view to compile a similar example.

confirmed that cmcstl2 works with my environment without the explicit ref_view for both filter_view and transform_view. Also realizing that in other code I have with join_view the ref_view over vector is implicitly generated. Not sure where the standard says to do that, but with extra data guessing this is a bug.

ericniebler commented 5 years ago

The difference is that in the Working Draft, the transform_view has a deduction guide that makes it work.

template<class R, class F>
  transform_view(R&&, F) -> transform_view<all_view<R>, F>;

Range-v3 hasn't gotten deduction guides yet.

I'm turning this into a feature request to add deduction guides when the compiler supports them.