{"action":"created","issue":{"url":"https://api.github.com/repos/ericniebler/range-v3/issues/474","repository_url":"https://api.github.com/repos/ericniebler/range-v3","labels_url":"https://api.github.com/repos/ericniebler/range-v3/issues/474/labels{/name}","comments_url":"https://api.github.com/repos/ericniebler/range-v3/issues/474/comments","events_url":"https://api.github.com/repos/ericniebler/range-v3/issues/474/events","html_url":"https://github.com/ericniebler/range-v3/issues/474","id":179061162,"number":474,"title":"algorithm/for_each does not work with abstract type refs","user":{"login":"alex94puchades","id":6496212,"avatar_url":"https://avatars.githubusercontent.com/u/6496212?v=3","gravatar_id":"","url":"https://api.github.com/users/alex94puchades","html_url":"https://github.com/alex94puchades","followers_url":"https://api.github.com/users/alex94puchades/followers","following_url":"https://api.github.com/users/alex94puchades/following{/other_user}","gists_url":"https://api.github.com/users/alex94puchades/gists{/gist_id}","starred_url":"https://api.github.com/users/alex94puchades/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/alex94puchades/subscriptions","organizations_url":"https://api.github.com/users/alex94puchades/orgs","repos_url":"https://api.github.com/users/alex94puchades/repos","events_url":"https://api.github.com/users/alex94puchades/events{/privacy}","received_events_url":"https://api.github.com/users/alex94puchades/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":7,"created_at":"2016-09-25T01:02:58Z","updated_at":"2016-10-21T15:58:53Z","closed_at":null,"body":"This [sample](https://gist.github.com/anonymous/8ec3c101908a974eed24933c5ea28222) fails with the following:\r\n\r\n> In file included from ..\\GitHub\\range-v3\\include/range/v3/detail/optional.hpp:20:0,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/utility/semiregular.hpp:21,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/utility/basic_iterator.hpp:25,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/utility/iterator.hpp:28,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/begin_end.hpp:24,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/view/any_view.hpp:21,\r\n>                  from test.cpp:1:\r\n> ..\\GitHub\\range-v3\\include/range/v3/detail/variant.hpp: In instantiation of 'struct ranges::v3::detail::indexed_datum<Foo, std::integral_constant<long long unsigned int, 1ull> >':\r\n> C:/Program Files/mingw-w64/x86_64-6.2.0-posix-seh-rt_v5-rev1/mingw64/lib/gcc/x86_64-w64-mingw32/6.2.0/include/c++/type_traits:1432:12:   required from 'struct std::is_trivially_destructible<ranges::v3::detail::indexed_datum<Foo, std::integral_constant<long long unsigned int, 1ull> > >'\r\n> ..\\GitHub\\range-v3\\include/meta/meta.hpp:1138:24:   required from 'struct meta::v1::detail::_and_<std::is_trivially_destructible<ranges::v3::detail::indexed_datum<Foo, std::integral_constant<long long unsigned int, 1ull> > > >'\r\n> ..\\GitHub\\range-v3\\include/meta/meta.hpp:1137:20:   required from 'struct meta::v1::detail::_and_<std::is_trivially_destructible<ranges::v3::detail::indexed_datum<meta::v1::nil_, std::integral_constant<long long unsigned int, 0ull> > >, std::is_trivially_destructible<ranges::v3::detail::indexed_datum<Foo, std::integral_constant<long long unsigned int, 1ull> > > >'\r\n> ..\\GitHub\\range-v3\\include/meta/meta.hpp:140:36:   required by substitution of 'template<class T> using _t = typename T::type [with T = meta::v1::detail::_and_<std::is_trivially_destructible<ranges::v3::detail::indexed_datum<meta::v1::nil_, std::integral_constant<long long unsigned int, 0ull> > >, std::is_trivially_destructible<ranges::v3::detail::indexed_datum<Foo, std::integral_constant<long long unsigned int, 1ull> > > >]'\r\n> ..\\GitHub\\range-v3\\include/meta/meta.hpp:1193:49:   required by substitution of 'template<class ... Bools> using and_ = meta::v1::_t<meta::v1::detail::_and_<Bools ...> > [with Bools = {std::is_trivially_destructible<ranges::v3::detail::indexed_datum<meta::v1::nil_, std::integral_constant<long long unsigned int, 0ull> > >, std::is_trivially_destructible<ranges::v3::detail::indexed_datum<Foo, std::integral_constant<long long unsigned int, 1ull> > >}]'\r\n> ..\\GitHub\\range-v3\\include/meta/meta.hpp:646:21:   [ skipping 15 instantiation contexts, use -ftemplate-backtrace-limit=0 to disable ]\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:223:18:   required by substitution of 'template<class Concept, class ... Ts> meta::v1::if_c<ranges::v3::concepts::models<Concept, Ts ...>::value, int> ranges::v3::concepts::model_of(Ts&& ...) [with Concept = ranges::v3::concepts::InputIterator; Ts = {ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel>}]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/range_concepts.hpp:110:58:   required by substitution of 'template<class T> decltype (ranges::v3::detail::valid_expr(model_of<ranges::v3::concepts::InputIterator>(ranges::v3::{anonymous}::begin(t)))) ranges::v3::concepts::InputRange::requires_(T&&) [with T = ranges::v3::any_view<Foo&>&]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:113:17:   required by substitution of 'template<class ... Ts, class Concept, class> meta::v1::apply<meta::v1::quote<meta::v1::lazy::strict_and>, typename meta::v1::detail::transform_<meta::v1::list<typename ranges::v3::detail::base_concepts_of<Concept, void>::type, meta::v1::bind_back<meta::v1::quote<ranges::v3::concepts::models>, Ts ...> >, void>::type> ranges::v3::detail::models_(Concept*) [with Ts = {ranges::v3::any_view<Foo&, (ranges::v3::category)0>&}; Concept = ranges::v3::concepts::InputRange; <template-parameter-1-3> = <missing>]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:212:69:   required from 'struct ranges::v3::concepts::models<ranges::v3::concepts::InputRange, ranges::v3::any_view<Foo&, (ranges::v3::category)0>&>'\r\n> ..\\GitHub\\range-v3\\include/range/v3/algorithm/for_each.hpp:49:17:   required by substitution of 'template<class Rng, class F, class P, class I, int _concept_requires_49, typename std::enable_if<((_concept_requires_49 == 43) || (ranges::v3::concepts::models<ranges::v3::concepts::InputRange, T>() && typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type> >::type())), int>::type <anonymous> > ranges::v3::range_safe_iterator_t<Rng> ranges::v3::for_each_fn::operator()(Rng&&, F, P) const [with Rng = ranges::v3::any_view<Foo&>&; F = main()::<lambda(Foo&)>; P = ranges::v3::ident; I = ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel>; int _concept_requires_49 = 42; typename std::enable_if<((_concept_requires_49 == 43) || (ranges::v3::concepts::models<ranges::v3::concepts::InputRange, T>() && typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type> >::type())), int>::type <anonymous> = <missing>]'\r\n> test.cpp:20:3:   required from here\r\n> ..\\GitHub\\range-v3\\include/range/v3/detail/variant.hpp:145:19: error: cannot declare field 'ranges::v3::detail::indexed_datum<Foo, std::integral_constant<long long unsigned int, 1ull> >::datum_' to be of abstract type 'Foo'\r\n>                  T datum_;\r\n>                    ^~~~~~\r\n> test.cpp:6:8: note:   because the following virtual functions are pure within 'Foo':\r\n>  struct Foo {\r\n>         ^~~\r\n> test.cpp:7:15: note: \tvirtual void Foo::foo()\r\n>   virtual void foo() = 0;\r\n>                ^~~\r\n> In file included from ..\\GitHub\\range-v3\\include/range/v3/utility/semiregular.hpp:21:0,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/utility/basic_iterator.hpp:25,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/utility/iterator.hpp:28,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/begin_end.hpp:24,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/view/any_view.hpp:21,\r\n>                  from test.cpp:1:\r\n> ..\\GitHub\\range-v3\\include/range/v3/detail/optional.hpp: In instantiation of 'struct ranges::v3::optional<Foo>':\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/semiregular.hpp:33:25:   required from 'struct ranges::v3::semiregular<Foo>'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/basic_iterator.hpp:48:51:   required from 'struct ranges::v3::detail::postfix_increment_proxy<ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel> >'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/iterator_concepts.hpp:322:55:   required by substitution of 'template<class I> decltype (ranges::v3::detail::valid_expr(model_of<ranges::v3::concepts::DerivedFrom, ranges::v3::concepts::InputIterator::category_t<I>, ranges::v3::input_iterator_tag>(), model_of<ranges::v3::concepts::Readable>((i ++)))) ranges::v3::concepts::InputIterator::requires_(I&&) [with I = ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel>]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:113:17:   required by substitution of 'template<class ... Ts, class Concept, class> meta::v1::apply<meta::v1::quote<meta::v1::lazy::strict_and>, typename meta::v1::detail::transform_<meta::v1::list<typename ranges::v3::detail::base_concepts_of<Concept, void>::type, meta::v1::bind_back<meta::v1::quote<ranges::v3::concepts::models>, Ts ...> >, void>::type> ranges::v3::detail::models_(Concept*) [with Ts = {ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel>}; Concept = ranges::v3::concepts::InputIterator; <template-parameter-1-3> = <missing>]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:212:69:   required from 'struct ranges::v3::concepts::models<ranges::v3::concepts::InputIterator, ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel> >'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:223:18:   required by substitution of 'template<class Concept, class ... Ts> meta::v1::if_c<ranges::v3::concepts::models<Concept, Ts ...>::value, int> ranges::v3::concepts::model_of(Ts&& ...) [with Concept = ranges::v3::concepts::InputIterator; Ts = {ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel>}]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/range_concepts.hpp:110:58:   required by substitution of 'template<class T> decltype (ranges::v3::detail::valid_expr(model_of<ranges::v3::concepts::InputIterator>(ranges::v3::{anonymous}::begin(t)))) ranges::v3::concepts::InputRange::requires_(T&&) [with T = ranges::v3::any_view<Foo&>&]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:113:17:   required by substitution of 'template<class ... Ts, class Concept, class> meta::v1::apply<meta::v1::quote<meta::v1::lazy::strict_and>, typename meta::v1::detail::transform_<meta::v1::list<typename ranges::v3::detail::base_concepts_of<Concept, void>::type, meta::v1::bind_back<meta::v1::quote<ranges::v3::concepts::models>, Ts ...> >, void>::type> ranges::v3::detail::models_(Concept*) [with Ts = {ranges::v3::any_view<Foo&, (ranges::v3::category)0>&}; Concept = ranges::v3::concepts::InputRange; <template-parameter-1-3> = <missing>]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:212:69:   required from 'struct ranges::v3::concepts::models<ranges::v3::concepts::InputRange, ranges::v3::any_view<Foo&, (ranges::v3::category)0>&>'\r\n> ..\\GitHub\\range-v3\\include/range/v3/algorithm/for_each.hpp:49:17:   required by substitution of 'template<class Rng, class F, class P, class I, int _concept_requires_49, typename std::enable_if<((_concept_requires_49 == 43) || (ranges::v3::concepts::models<ranges::v3::concepts::InputRange, T>() && typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type> >::type())), int>::type <anonymous> > ranges::v3::range_safe_iterator_t<Rng> ranges::v3::for_each_fn::operator()(Rng&&, F, P) const [with Rng = ranges::v3::any_view<Foo&>&; F = main()::<lambda(Foo&)>; P = ranges::v3::ident; I = ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel>; int _concept_requires_49 = 42; typename std::enable_if<((_concept_requires_49 == 43) || (ranges::v3::concepts::models<ranges::v3::concepts::InputRange, T>() && typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type> >::type())), int>::type <anonymous> = <missing>]'\r\n> test.cpp:20:3:   required from here\r\n> ..\\GitHub\\range-v3\\include/range/v3/detail/optional.hpp:37:13: error: invalid abstract parameter type 'Foo'\r\n>              optional(T t)\r\n>              ^~~~~~~~\r\n> In file included from ..\\GitHub\\range-v3\\include/range/v3/utility/basic_iterator.hpp:25:0,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/utility/iterator.hpp:28,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/begin_end.hpp:24,\r\n>                  from ..\\GitHub\\range-v3\\include/range/v3/view/any_view.hpp:21,\r\n>                  from test.cpp:1:\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/semiregular.hpp: In instantiation of 'struct ranges::v3::semiregular<Foo>':\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/basic_iterator.hpp:48:51:   required from 'struct ranges::v3::detail::postfix_increment_proxy<ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel> >'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/iterator_concepts.hpp:322:55:   required by substitution of 'template<class I> decltype (ranges::v3::detail::valid_expr(model_of<ranges::v3::concepts::DerivedFrom, ranges::v3::concepts::InputIterator::category_t<I>, ranges::v3::input_iterator_tag>(), model_of<ranges::v3::concepts::Readable>((i ++)))) ranges::v3::concepts::InputIterator::requires_(I&&) [with I = ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel>]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:113:17:   required by substitution of 'template<class ... Ts, class Concept, class> meta::v1::apply<meta::v1::quote<meta::v1::lazy::strict_and>, typename meta::v1::detail::transform_<meta::v1::list<typename ranges::v3::detail::base_concepts_of<Concept, void>::type, meta::v1::bind_back<meta::v1::quote<ranges::v3::concepts::models>, Ts ...> >, void>::type> ranges::v3::detail::models_(Concept*) [with Ts = {ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel>}; Concept = ranges::v3::concepts::InputIterator; <template-parameter-1-3> = <missing>]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:212:69:   required from 'struct ranges::v3::concepts::models<ranges::v3::concepts::InputIterator, ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel> >'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:223:18:   required by substitution of 'template<class Concept, class ... Ts> meta::v1::if_c<ranges::v3::concepts::models<Concept, Ts ...>::value, int> ranges::v3::concepts::model_of(Ts&& ...) [with Concept = ranges::v3::concepts::InputIterator; Ts = {ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel>}]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/range_concepts.hpp:110:58:   required by substitution of 'template<class T> decltype (ranges::v3::detail::valid_expr(model_of<ranges::v3::concepts::InputIterator>(ranges::v3::{anonymous}::begin(t)))) ranges::v3::concepts::InputRange::requires_(T&&) [with T = ranges::v3::any_view<Foo&>&]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:113:17:   required by substitution of 'template<class ... Ts, class Concept, class> meta::v1::apply<meta::v1::quote<meta::v1::lazy::strict_and>, typename meta::v1::detail::transform_<meta::v1::list<typename ranges::v3::detail::base_concepts_of<Concept, void>::type, meta::v1::bind_back<meta::v1::quote<ranges::v3::concepts::models>, Ts ...> >, void>::type> ranges::v3::detail::models_(Concept*) [with Ts = {ranges::v3::any_view<Foo&, (ranges::v3::category)0>&}; Concept = ranges::v3::concepts::InputRange; <template-parameter-1-3> = <missing>]'\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/concepts.hpp:212:69:   required from 'struct ranges::v3::concepts::models<ranges::v3::concepts::InputRange, ranges::v3::any_view<Foo&, (ranges::v3::category)0>&>'\r\n> ..\\GitHub\\range-v3\\include/range/v3/algorithm/for_each.hpp:49:17:   required by substitution of 'template<class Rng, class F, class P, class I, int _concept_requires_49, typename std::enable_if<((_concept_requires_49 == 43) || (ranges::v3::concepts::models<ranges::v3::concepts::InputRange, T>() && typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type> >::type())), int>::type <anonymous> > ranges::v3::range_safe_iterator_t<Rng> ranges::v3::for_each_fn::operator()(Rng&&, F, P) const [with Rng = ranges::v3::any_view<Foo&>&; F = main()::<lambda(Foo&)>; P = ranges::v3::ident; I = ranges::v3::basic_iterator<ranges::v3::detail::any_cursor<Foo&, (ranges::v3::category)0>, ranges::v3::detail::any_sentinel>; int _concept_requires_49 = 42; typename std::enable_if<((_concept_requires_49 == 43) || (ranges::v3::concepts::models<ranges::v3::concepts::InputRange, T>() && typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<Proj>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, typename meta::v1::detail::_if_<meta::v1::list<typename meta::v1::detail::_and_<std::is_same<std::integer_sequence<bool, typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value>, std::integer_sequence<bool, (typename ranges::v3::concepts::models<ranges::v3::concepts::Readable, I>::type:: value || true)> >, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<meta::v1::strict_and>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::Function>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I>, meta::v1::defer<meta::v1::invoke, meta::v1::compose<meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::detail::on_<meta::v1::quote<ranges::v3::CommonReference>, meta::v1::bind_front<meta::v1::quote<meta::v1::apply>, meta::v1::bind_front<meta::v1::quote<ranges::v3::concepts::Function::result_t>, decltype (ranges::v3::{anonymous}::as_function(declval<P>()))> > > >, meta::v1::quote<ranges::v3::detail::iter_args_lists_> >, I> >::type, ranges::v3::detail::projected_readable<I, P> >, std::integral_constant<bool, true> >::type> >::type())), int>::type <anonymous> = <missing>]'\r\n> test.cpp:20:3:   required from here\r\n> ..\\GitHub\\range-v3\\include/range/v3/utility/semiregular.hpp:36:13: error: invalid abstract parameter type 'Foo'\r\n>              semiregular(T f)\r\n>              ^~~~~~~~~~~\r\n>"},"comment":{"url":"https://api.github.com/repos/ericniebler/range-v3/issues/comments/255416136","html_url":"https://github.com/ericniebler/range-v3/issues/474#issuecomment-255416136","issue_url":"https://api.github.com/repos/ericniebler/range-v3/issues/474","id":255416136,"user":{"login":"pfultz2","id":1306044,"avatar_url":"https://avatars.githubusercontent.com/u/1306044?v=3","gravatar_id":"","url":"https://api.github.com/users/pfultz2","html_url":"https://github.com/pfultz2","followers_url":"https://api.github.com/users/pfultz2/followers","following_url":"https://api.github.com/users/pfultz2/following{/other_user}","gists_url":"https://api.github.com/users/pfultz2/gists{/gist_id}","starred_url":"https://api.github.com/users/pfultz2/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pfultz2/subscriptions","organizations_url":"https://api.github.com/users/pfultz2/orgs","repos_url":"https://api.github.com/users/pfultz2/repos","events_url":"https://api.github.com/users/pfultz2/events{/privacy}","received_events_url":"https://api.github.com/users/pfultz2/received_events","type":"User","site_admin":false},"created_at":"2016-10-21T15:58:52Z","updated_at":"2016-10-21T15:58:52Z","body":"> There isn't a value type that makes sense\r\n\r\n A `value_type` is not needed algorithms such as `for_each`."}}
{"actor":{"display_login":"pfultz2"}}