0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

26 Ranges library [ranges] 26.2 Header <ranges> synopsis [ranges.syn] C++N4910:2022 (650) p1027.cpp

Last updated at Posted at 2022-08-11

はじめに(Introduction)

N4910 Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4910.pdf

n4910は、ISO/IEC JTC1 SC22 WG21の作業原案(Working Draft)です。
公式のISO/IEC 14882原本ではありません。
ISO/IEC JTC1 SC22 WG21では、可能な限り作業文書を公開し、幅広い意見を求めています。
一連の記事はコード断片をコンパイルできる形にする方法を検討してコンパイル、リンク、実行して、規格案の原文と処理系(g++, Clang++)との違いを確認し、技術内容を検討し、ISO/IEC JTC1 SC22 WG21にフィードバックするために用います。
また、CERT C++, MISRA C++等のコーディング標準のコード断片をコンパイルする際の参考にさせていただこうと考えています。CERT C++, MISRA C++が標準化の動きとの時間的なずれがあれば確認できれば幸いです。また、boostライブラリとの関連、Linux OS, TOPPERSカーネル、g++(GCC), clang++(LLVM)との関係も調査中です。
何か、抜け漏れ、耳より情報がありましたらおしらせくださると幸いです。

<この項は書きかけです。順次追記します。>

背景(back ground)

C/C++でコンパイルエラーが出ると、途方にくれることがしばしばあります。
何回かに1回は、該当するエラーが検索できます。
ただ、条件が違っていて、そこでの修正方法では目的を達成しないこともしばしばです。いろいろな条件のコンパイルエラーとその対応方法について、広く記録することによって、いつか同じエラーに遭遇した時にやくに立つことを目指しています。

この半年の間で、三度、自分のネットでの記録に助けられたことがあります。
また過去に解決できなかった記録を10種類以上、最近になって解決できたことがあります。それは、主に次の3つの情報に基づいています。

cpprefjp - C++日本語リファレンス

コンパイラの実装状況

また
https://researchmap.jp/joub9b3my-1797580/#_1797580
に記載したサイトのお世話になっています。

作業方針(sequence)

Clang++では-std=c++03, C++2bの2種類
g++では-std=c++03, c++2bの2種類
でコンパイルし、

1)コンパイルエラーを収集する。
2)コンパイルエラーをなくす方法を検討する。
コンパイルエラーになる例を示すだけが目的のコードは、コンパイルエラーをなくすのではなく、コンパイルエラーの種類を収集するだけにする。
文法を示すのが目的のコード場合に、コンパイルエラーをなくすのに手間がかかる場合は、順次作業します。
3)リンクエラーをなくす方法を検討する。
文法を示すのが目的のコード場合に、リンクエラーをなくすのに手間がかかる場合は、順次作業します。
4)意味のある出力を作る。
コンパイル、リンクが通っても、意味のある出力を示そうとすると、コンパイル・リンクエラーが出て収拾できそうにない場合がある。順次作業します。

1)だけのものから4)まで進んだものと色々ある状態です。一歩でも前に進むご助言をお待ちしています。「検討事項」の欄に現状を記録するようにしています。

C++N4910:2022 Standard Working Draft on ISO/IEC 14882(0) sample code compile list

C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list

C++N4606, 2016符号断片編纂一覧(example code compile list)

C++N4606, 2016 Working Draft 2016, ISO/IEC 14882, C++ standard(1) Example code compile list
https://qiita.com/kaizen_nagoya/items/df5d62c35bd6ed1c3d43/

C++N3242, 2011 sample code compile list on clang++ and g++

編纂器(Compiler)

clang++ --version

Debian clang version 14.0.5-++20220610033153+c12386ae247c-1~exp1~20220610153237.151
Target: x86_64-pc-linux-gnu, Thread model: posix, InstalledDir: /usr/bin

g++- --version

g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

26 Ranges library [ranges] 26.1 General [ranges.general]C++N4910:2022 (650) p1027.cpp

算譜(source code)

p1027.cpp
// C++N4910 Committee Draft, Standard for Programming Language C++
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4910.pdf
const char * n4910 = "26 Ranges library [ranges] 26.1 General [ranges.general]C++N4910:2022 (650) p1027.cpp";
// Debian clang version 14.0.5-++20220610033153+c12386ae247c-
// g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc.
// Edited by Dr. OGAWA Kiyoshi. Compile procedure and results record.
// C++N4910:2022 Standard Working Draft on ISO/IEC 14882(0) sample code compile list
// https://qiita.com/kaizen_nagoya/items/fc957ddddd402004bb91

#include "N4910.h"

using namespace std;

// 26.2 Header <ranges> synopsis [ranges.syn]
#include <compare>
#include <initializer_list>
#include <iterator>
// see 17.11.1 // see 17.10.2 // see 25.2
namespace std::ranges {
inline namespace unspecified {
// 26.3, range access
}
inline constexpr unspecified begin = unspecified ;
inline constexpr unspecified cbegin end = unspecified ;
inline constexpr unspecified cend =   using range_difference_t
                                      inline constexpr unspecified rbegin = iter_difference_t<iterator_t<R>>;
inline constexpr unspecified rend = unspecified ;
inline constexpr unspecified crbegin = unspecified ;
inline constexpr unspecified crend = unspecified ;
inline constexpr unspecified size = unspecified ;
inline constexpr unspecified ssize = unspecified ;
inline constexpr unspecified empty = unspecified ;
inline constexpr unspecified data = unspecified ;
inline constexpr unspecified data = unspecified ;
inline constexpr unspecified cdata = unspecified ;
// 26.4.2, ranges template<class T>
concept range = see below;
template<class T>
inline constexpr bool enable_borrowed_range = false;
template<class T>
concept borrowed_range = see below;
template<class T>
using iterator_t = decltype(ranges::begin(declval<T&>()));
template<range R>
using sentinel_t = decltype(ranges::end(declval<R&>()));
template<range R>
template<sized_range R>
using range_size_t = decltype(ranges::size(declval<R&>()));
template<range R>
using range_value_t = iter_value_t<iterator_t<R>>;
template<range R>
using range_reference_t = iter_reference_t<iterator_t<R>>;
template<range R>
using range_rvalue_reference_t = iter_rvalue_reference_t<iterator_t<R>>;
// 26.4.3, sized ranges template<class>
inline constexpr bool disable_sized_range = false;
template<class T>
concept sized_range = see_below;
// 26.4.4, views template<class T>
inline constexpr bool enable_view = see below;
struct view_base {};
template<class T>
concept view = see_below;
// 26.4.5, other range refinements
template<class R, class T>
concept output_range = see_below;
template<class T>
concept input_range = see_below;
template<class T>
concept forward_range = see_below;
template<class T>
concept bidirectional_range = see_below;
template<class T>
concept random_access_range = see_below;
template<class T>
concept contiguous_range = see_below;
template<class T>
concept common_range = see_below;
template<class T>
concept viewable_range = see_below;
// 26.5.3, class template view_interface
template<class D>
requires is_class_v<D> && same_as<D, remove_cv_t<D>>
        class view_interface;
// 26.5.4, sub-ranges
enum class subrange_kind : bool { unsized, sized };
template<input_or_output_iterator I, sentinel_for<I> S = I, subrange_kind K = see below> requires (K == subrange_kind::sized || !sized_sentinel_for<S, I>)
class subrange;
template<class I, class S, subrange_kind K>
inline constexpr bool enable_borrowed_range<subrange<I, S, K>> = true;
// 26.5.5, dangling iterator handling struct dangling;
template<range R>
using borrowed_iterator_t = see_below;
template<range R>
using borrowed_subrange_t = see_below;
// 26.5.6, range conversions
template<class C, input_range R, class... Args> requires (!view<C>)
constexpr C to(R&& r, Args&&... args);
template<template<class...> class C, input_range R, class... Args>
constexpr auto to(R&& r, Args&&... args) -> see below;
template<class C, class... Args> requires (!view<C>)
constexpr auto to(Args&&... args) -> see below;
template<template<class...> class C, class... Args> constexpr auto to(Args&&... args) -> see below;
// 26.6.2, empty view
template<class T>
requires is_object_v<T>
class empty_view;
template<class T>
inline constexpr bool enable_borrowed_range<empty_view<T>> = true;
namespace views {
template<class T>
inline constexpr empty_view<T> empty{};
}
// 26.6.3, single view
template<copy_constructible T>
requires is_object_v<T>
class single_view;
namespace views {
inline constexpr unspecified single = unspecified;
} template<bool Const, class T>
using maybe-const = conditional_t<Const, const T, T>; // exposition only
// 26.6.4, iota view
template<weakly_incrementable W, semiregular Bound = unreachable_sentinel_t>
requires weakly-equality-comparable-with<W, Bound> && copyable<W> class iota_view;
template<class W, class Bound>
inline constexpr bool enable_borrowed_range<iota_view<W, Bound>> = true;
namespace views {
inline constexpr unspecified iota = unspecified;
}
// 26.6.5, istream view
template<movable Val, class CharT, class Traits = char_traits<CharT>>
requires see below class basic_istream_view;
template<class Val>
using istream_view = basic_istream_view<Val, char>;
template<class Val>
using wistream_view = basic_istream_view<Val, wchar_t>;
namespace views {
template<class T> inline constexpr unspecified istream = unspecified;
}
// 26.7.2, range adaptor objects
template<class D>
requires is_class_v<D> && same_as<D, remove_cv_t<D>>
class range_adaptor_closure { };
// 26.7.5, all view
namespace views {
inline constexpr unspecified all = unspecified ;
template<viewable_range R>
using all_t = decltype(all(declval<R>()));
}
template<range R>
requires is_object_v<R>
class ref_view;
template<class T>
inline constexpr bool enable_borrowed_range<ref_view<T>> = true;
// 26.7.5.3, owning view
template<range R>
requires see below class owning_view;
template<class T>
inline constexpr bool enable_borrowed_range<owning_view<T>> = enable_borrowed_range<T>;
// 26.7.6, filter view
template<input_range V, indirect_unary_predicate<iterator_t<V>> Pred>
requires view<V> && is_object_v<Pred>
class filter_view;
namespace views {
inline constexpr unspecified filter = unspecified;
}
// 26.7.7, transform view
template<input_range V, copy_constructible F>
requires view<V> && is_object_v<F> &&
regular_invocable<F&, range_reference_t<V>> && can-reference<invoke_result_t<F&, range_reference_t<V>>>
        class transform_view;
namespace views {
inline constexpr unspecified transform = unspecified;
}
// 26.7.8, take view
template<view> class take_view;
template<class T>
inline constexpr bool enable_borrowed_range<take_view<T>> = enable_borrowed_range<T>;
namespace views {
inline constexpr unspecified take = unspecified;
}
// 26.7.9, take while view
template<view V, class Pred>
requires input_range<V> && is_object_v<Pred> &&
indirect_unary_predicate<const Pred, iterator_t<V>>
        class take_while_view;
namespace views {
inline constexpr unspecified take_while = unspecified;
}
// 26.7.10, drop view
template<view V>
class drop_view;
template<class T>
inline constexpr bool enable_borrowed_range<drop_view<T>> = enable_borrowed_range<T>;
namespace views {
inline constexpr unspecified drop = unspecified;
}
// 26.7.11, drop while view
template<view V, class Pred>
requires input_range<V> && is_object_v<Pred> &&
indirect_unary_predicate<const Pred, iterator_t<V>>
        class drop_while_view;
template<class T, class Pred>
inline constexpr bool enable_borrowed_range<drop_while_view<T, Pred>> =
            enable_borrowed_range<T>;
namespace views {
inline constexpr unspecified drop_while = unspecified;
}
// 26.7.12, join view
template<input_range V>
requires view<V> && input_range<range_reference_t<V>>
        class join_view;
namespace views {
inline constexpr unspecified join = unspecified;
}
// 26.7.13, join with view
template<class R, class P>
concept compatible-joinable-ranges = see below ; // exposition only
template<input_range V, forward_range Pattern>
requires view<V> && input_range<range_reference_t<V>>
        && view<Pattern>
        && compatible-joinable-ranges<range_reference_t<V>, Pattern> class join_with_view;
namespace views {
inline constexpr unspecified join_with = unspecified;
}
// 26.7.14, lazy split view
template<class R>
concept tiny-range = see below ; // exposition only
template<input_range V, forward_range Pattern>
requires view<V> && view<Pattern> &&
indirectly_comparable<iterator_t<V>, iterator_t<Pattern>, ranges::equal_to> &&
(forward_range<V> || tiny-range<Pattern>) class lazy_split_view;
// 26.7.15, split view
template<forward_range V, forward_range Pattern>
requires view<V> && view<Pattern> &&
indirectly_comparable<iterator_t<V>, iterator_t<Pattern>, ranges::equal_to>
class split_view;
namespace views {
inline constexpr unspecified inline constexpr unspecified
}
lazy_split = unspecified ;
split = unspecified ;
// 26.7.16, counted view
namespace views {
inline constexpr unspecified counted = unspecified;
}
// 26.7.17, common view
template<view V>
requires (!common_range<V> && copyable<iterator_t<V>>)
class common_view;
template<class T>
inline constexpr bool enable_borrowed_range<common_view<T>> = enable_borrowed_range<T>;
namespace views {
inline constexpr unspecified common = unspecified;
}
// 26.7.18, reverse view
template<view V>
requires bidirectional_range<V>
class reverse_view;
template<class T>
inline constexpr bool enable_borrowed_range<reverse_view<T>> = enable_borrowed_range<T>;
namespace views {
inline constexpr unspecified reverse = unspecified;
}
// 26.7.19, elements view
template<input_range V, size_t N>
requires see below class elements_view;
template<class T, size_t N>
inline constexpr bool enable_borrowed_range<elements_view<T, N>> = enable_borrowed_range<T>;
template<class R>
using keys_view = elements_view<R, 0>;
template<class R>
using values_view = elements_view<R, 1>;
namespace views {
template<size_t N>
inline constexpr unspecified elements = unspecified ;
inline constexpr auto keys = elements<0>;
inline constexpr auto values = elements<1>;
}
// 26.7.20, zip view
template<input_range... Views>
requires (view<Views> && ...) && (sizeof...(Views) > 0)
class zip_view;
template<class... Views>
inline constexpr bool enable_borrowed_range<zip_view<Views...>> =
            (enable_borrowed_range<Views> && ...);
namespace views {
inline constexpr unspecified zip = unspecified;
}
// 26.7.21, zip transform view
template<copy_constructible F, input_range... Views>
requires (view<Views> && ...) && (sizeof...(Views) > 0) && is_object_v<F> && regular_invocable<F&, range_reference_t<Views>...> && can-reference<invoke_result_t<F&, range_reference_t<Views>...>>
        class zip_transform_view;
namespace views {
inline constexpr unspecified zip_transform = unspecified;
}
// 26.7.22, adjacent view
template<forward_range V, size_t N>
requires view<V> && (N > 0)
class adjacent_view;
template<class V, size_t N>
inline constexpr bool enable_borrowed_range<adjacent_view<V, N>> =    enable_borrowed_range<V>;
namespace views {
template<size_t N>
inline constexpr unspecified adjacent = unspecified ;
inline constexpr auto pairwise = adjacent<2>;
}
// 26.7.23, adjacent transform view
template<forward_range V, copy_constructible F, size_t N>
requires see below
class adjacent_transform_view;
namespace views {
template<size_t N>
inline constexpr unspecified adjacent_transform = unspecified ;
inline constexpr auto pairwise_transform = adjacent_transform<2>;
}
// 26.7.24, chunk view
template<view V>
requires input_range<V>
class chunk_view;
template<view V>
requires forward_range<V>
class chunk_view<V>;
template<class V>
inline constexpr bool enable_borrowed_range<chunk_view<V>> = forward_range<V> && enable_borrowed_range<V>;
namespace views {
inline constexpr unspecified chunk = unspecified;
}
// 26.7.25, slide view
template<view V>
requires forward_range<V>
class slide_view;
template<class V>
inline constexpr bool enable_borrowed_range<slide_view<V>> = enable_borrowed_range<V>;
namespace views {
inline constexpr unspecified slide = unspecified;
}
// 26.7.26, chunk by view
template<forward_range V, indirect_binary_predicate<iterator_t<V>, iterator_t<V>> Pred>
requires view<V> && is_object_v<Pred>
class chunk_by_view;
namespace views {
inline constexpr unspecified chunk_by = unspecified;
}
}
namespace std {
namespace views = ranges::views;
template<class T> struct tuple_size;
template<size_t I, class T> struct tuple_element;
template<class I, class S, ranges::subrange_kind K>
struct tuple_size<ranges::subrange<I, S, K>>
            : integral_constant<size_t, 2> {};
template<class I, class S, ranges::subrange_kind K>
struct tuple_element<0, ranges::subrange<I, S, K>> {
    using type = I;
};
// — If E is an rvalue and enable_borrowed_range<remove_cv_t<T>> is false, ranges::begin(E) is ill- formed.
// — Otherwise, if T is an array type (9.3.4.5) and remove_all_extents_t<T> is an incomplete type, ranges::begin(E) is ill-formed with no diagnostic required.
// — Otherwise, if T is an array type, ranges::begin(E) is expression-equivalent to t + 0.
// — Otherwise, if auto(t.begin()) is a valid expression whose type models input_or_output_iterator,
ranges::begin(E) is expression-equivalent to auto(t.begin()).
// — Otherwise, if T is a class or enumeration type and auto(begin(t)) is a valid expression whose type models input_or_output_iterator with overload resolution performed in a context in which unqualified lookup for begin finds only the declarations
void begin(auto&) = delete;
void begin(const auto&) = delete;
// then ranges::begin(E) is expression-equivalent to
auto(begin(t)) with overload resolution performed in the above context.
template<class I, class S, ranges::subrange_kind K>
struct tuple_element<1, ranges::subrange<I, S, K>> {
    using type = S;
};
template<class I, class S, ranges::subrange_kind K>
struct tuple_element<0, const ranges::subrange<I, S, K>> {
    using type = I;
};
template<class I, class S, ranges::subrange_kind K>
struct tuple_element<1, const ranges::subrange<I, S, K>> {
    using type = S;
};
struct from_range_t {
    explicit from_range_t() = default;
};
inline constexpr from_range_t from_range{};
}
//  Within this Clause, for an integer-like type X (25.3.4.4), make-unsigned-like-t<X> denotes make_unsigned_- t<X> if X is an integer type; otherwise, it denotes a corresponding unspecified unsigned-integer-like type of the same width as X. For an expression x of type X, to-unsigned-like(x) is x explicitly converted to make-unsigned-like-t<X>.
//  Also within this Clause, make-signed-like-t <X> for an integer-like type X denotes make_signed_t<X> if X is an integer type; otherwise, it denotes a corresponding unspecified signed-integer-like type of the same width as X.
int main() {
    cout  <<  n4910 << endl;
    return EXIT_SUCCESS;
}

編纂・実行結果(compile and go)

bash
$ clang++ p1027.cpp -std=03 -o p1027l -I. -Wall
In file included from p1027.cpp:10:
In file included from ./N4910.h:11:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/atomic:38:
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/c++0x_warning.h:32:2: error: This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support \
 ^
p1027.cpp:19:14: warning: nested namespace definition is a C++17 extension; define each namespace separately [-Wc++17-extensions]
namespace std::ranges {
             ^~~~~~~~
              { namespace ranges
p1027.cpp:20:1: warning: inline namespaces are a C++11 feature [-Wc++11-inline-namespace]
inline namespace unspecified {
^
p1027.cpp:23:8: error: unknown type name 'constexpr'
inline constexpr unspecified begin = unspecified ; 
       ^
p1027.cpp:23:1: warning: inline variables are a C++17 extension [-Wc++17-extensions]
inline constexpr unspecified begin = unspecified ; 
^
p1027.cpp:23:29: error: expected ';' after top level declarator
inline constexpr unspecified begin = unspecified ; 
                            ^
                            ;
p1027.cpp:24:8: error: unknown type name 'constexpr'
inline constexpr unspecified cbegin end = unspecified ;
       ^
p1027.cpp:24:1: warning: inline variables are a C++17 extension [-Wc++17-extensions]
inline constexpr unspecified cbegin end = unspecified ;
^
p1027.cpp:24:29: error: expected ';' after top level declarator
inline constexpr unspecified cbegin end = unspecified ;
                            ^
                            ;
p1027.cpp:25:8: error: unknown type name 'constexpr'
inline constexpr unspecified cend =   using range_difference_t 
       ^
p1027.cpp:25:1: warning: inline variables are a C++17 extension [-Wc++17-extensions]
inline constexpr unspecified cend =   using range_difference_t 
^
p1027.cpp:25:29: error: expected ';' after top level declarator
inline constexpr unspecified cend =   using range_difference_t 
                            ^
                            ;
p1027.cpp:27:8: error: unknown type name 'constexpr'
inline constexpr unspecified rend = unspecified ;
       ^
p1027.cpp:27:1: warning: inline variables are a C++17 extension [-Wc++17-extensions]
inline constexpr unspecified rend = unspecified ;
^
p1027.cpp:27:29: error: expected ';' after top level declarator
inline constexpr unspecified rend = unspecified ;
                            ^
                            ;
p1027.cpp:28:8: error: unknown type name 'constexpr'
inline constexpr unspecified crbegin = unspecified ; 
       ^
p1027.cpp:28:1: warning: inline variables are a C++17 extension [-Wc++17-extensions]
inline constexpr unspecified crbegin = unspecified ; 
^
p1027.cpp:28:29: error: expected ';' after top level declarator
inline constexpr unspecified crbegin = unspecified ; 
                            ^
                            ;
p1027.cpp:29:8: error: unknown type name 'constexpr'
inline constexpr unspecified crend = unspecified ;
       ^
p1027.cpp:29:1: warning: inline variables are a C++17 extension [-Wc++17-extensions]
inline constexpr unspecified crend = unspecified ;
^
p1027.cpp:29:29: error: expected ';' after top level declarator
inline constexpr unspecified crend = unspecified ;
                            ^
                            ;
p1027.cpp:30:8: error: unknown type name 'constexpr'
inline constexpr unspecified size = unspecified ;
       ^
p1027.cpp:30:1: warning: inline variables are a C++17 extension [-Wc++17-extensions]
inline constexpr unspecified size = unspecified ;
^
p1027.cpp:30:29: error: expected ';' after top level declarator
inline constexpr unspecified size = unspecified ;
                            ^
                            ;
p1027.cpp:31:8: error: unknown type name 'constexpr'
inline constexpr unspecified ssize = unspecified ;
       ^
p1027.cpp:31:1: warning: inline variables are a C++17 extension [-Wc++17-extensions]
inline constexpr unspecified ssize = unspecified ;
^
p1027.cpp:31:29: error: expected ';' after top level declarator
inline constexpr unspecified ssize = unspecified ;
                            ^
                            ;
p1027.cpp:32:8: error: unknown type name 'constexpr'
inline constexpr unspecified empty = unspecified ;
       ^
p1027.cpp:32:1: warning: inline variables are a C++17 extension [-Wc++17-extensions]
inline constexpr unspecified empty = unspecified ;
^
p1027.cpp:32:29: error: expected ';' after top level declarator
inline constexpr unspecified empty = unspecified ;
                            ^
                            ;
fatal error: too many errors emitted, stopping now [-ferror-limit=]
11 warnings and 20 errors generated.
$ clang++ p1027.cpp -std=2b -o p1027l -I. -Wall
p1027.cpp:23:18: error: unknown type name 'unspecified'
inline constexpr unspecified begin = unspecified ; 
                 ^
p1027.cpp:23:38: error: unexpected namespace name 'unspecified': expected expression
inline constexpr unspecified begin = unspecified ; 
                                     ^
p1027.cpp:24:18: error: unknown type name 'unspecified'
inline constexpr unspecified cbegin end = unspecified ;
                 ^
p1027.cpp:24:36: error: expected ';' after top level declarator
inline constexpr unspecified cbegin end = unspecified ;
                                   ^
                                   ;
p1027.cpp:25:18: error: unknown type name 'unspecified'
inline constexpr unspecified cend =   using range_difference_t 
                 ^
p1027.cpp:25:39: error: expected expression
inline constexpr unspecified cend =   using range_difference_t 
                                      ^
p1027.cpp:27:18: error: unknown type name 'unspecified'
inline constexpr unspecified rend = unspecified ;
                 ^
p1027.cpp:27:37: error: unexpected namespace name 'unspecified': expected expression
inline constexpr unspecified rend = unspecified ;
                                    ^
p1027.cpp:28:18: error: unknown type name 'unspecified'
inline constexpr unspecified crbegin = unspecified ; 
                 ^
p1027.cpp:28:40: error: unexpected namespace name 'unspecified': expected expression
inline constexpr unspecified crbegin = unspecified ; 
                                       ^
p1027.cpp:29:18: error: unknown type name 'unspecified'
inline constexpr unspecified crend = unspecified ;
                 ^
p1027.cpp:29:38: error: unexpected namespace name 'unspecified': expected expression
inline constexpr unspecified crend = unspecified ;
                                     ^
p1027.cpp:30:18: error: unknown type name 'unspecified'
inline constexpr unspecified size = unspecified ;
                 ^
p1027.cpp:30:37: error: unexpected namespace name 'unspecified': expected expression
inline constexpr unspecified size = unspecified ;
                                    ^
p1027.cpp:31:18: error: unknown type name 'unspecified'
inline constexpr unspecified ssize = unspecified ;
                 ^
p1027.cpp:31:38: error: unexpected namespace name 'unspecified': expected expression
inline constexpr unspecified ssize = unspecified ;
                                     ^
p1027.cpp:32:18: error: unknown type name 'unspecified'
inline constexpr unspecified empty = unspecified ;
                 ^
p1027.cpp:32:38: error: unexpected namespace name 'unspecified': expected expression
inline constexpr unspecified empty = unspecified ;
                                     ^
p1027.cpp:33:18: error: unknown type name 'unspecified'
inline constexpr unspecified data = unspecified ;
                 ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

$ g++ p1027.cpp -std=03 -o p1027g -I. -Wall
In file included from /usr/local/include/c++/12.1.0/atomic:38,
                 from N4910.h:11,
                 from p1027.cpp:10:
/usr/local/include/c++/12.1.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
   32 | #error This file requires compiler and library support \
      |  ^~~~~
p1027.cpp:23:8: warning: identifier 'constexpr' is a keyword in C++11 [-Wc++11-compat]
   23 | inline constexpr unspecified begin = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:42:22: warning: identifier 'decltype' is a keyword in C++11 [-Wc++11-compat]
   42 |   using iterator_t = decltype(ranges::begin(declval<T&>()));
      |                      ^~~~~~~~
p1027.cpp:23:8: error: 'constexpr' does not name a type
   23 | inline constexpr unspecified begin = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:23:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:24:8: error: 'constexpr' does not name a type
   24 | inline constexpr unspecified cbegin end = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:24:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:25:8: error: 'constexpr' does not name a type
   25 | inline constexpr unspecified cend =   using range_difference_t
      |        ^~~~~~~~~
p1027.cpp:25:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:27:8: error: 'constexpr' does not name a type
   27 | inline constexpr unspecified rend = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:27:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:28:8: error: 'constexpr' does not name a type
   28 | inline constexpr unspecified crbegin = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:28:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:29:8: error: 'constexpr' does not name a type
   29 | inline constexpr unspecified crend = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:29:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:30:8: error: 'constexpr' does not name a type
   30 | inline constexpr unspecified size = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:30:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:31:8: error: 'constexpr' does not name a type
   31 | inline constexpr unspecified ssize = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:31:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:32:8: error: 'constexpr' does not name a type
   32 | inline constexpr unspecified empty = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:32:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:33:8: error: 'constexpr' does not name a type
   33 | inline constexpr unspecified data = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:33:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:34:8: error: 'constexpr' does not name a type
   34 | inline constexpr unspecified data = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:34:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:35:8: error: 'constexpr' does not name a type
   35 | inline constexpr unspecified cdata = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:35:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:37:1: error: 'concept' does not name a type
   37 | concept range = see below; template<class T>
      | ^~~~~~~
p1027.cpp:37:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:38:10: error: 'constexpr' does not name a type
   38 |   inline constexpr bool enable_borrowed_range = false;
      |          ^~~~~~~~~
p1027.cpp:38:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:40:1: error: 'concept' does not name a type
   40 | concept borrowed_range = see below;
      | ^~~~~~~
p1027.cpp:40:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:42:3: error: expected unqualified-id before 'using'
   42 |   using iterator_t = decltype(ranges::begin(declval<T&>()));
      |   ^~~~~
p1027.cpp:43:10: error: 'range' has not been declared
   43 | template<range R>
      |          ^~~~~
p1027.cpp:44:3: error: expected unqualified-id before 'using'
   44 |   using sentinel_t = decltype(ranges::end(declval<R&>()));
      |   ^~~~~
p1027.cpp:45:10: error: 'range' has not been declared
   45 | template<range R>
      |          ^~~~~
p1027.cpp:46:10: error: 'sized_range' has not been declared
   46 | template<sized_range R>
      |          ^~~~~~~~~~~
p1027.cpp:47:3: error: expected unqualified-id before 'using'
   47 |   using range_size_t = decltype(ranges::size(declval<R&>()));
      |   ^~~~~
p1027.cpp:48:10: error: 'range' has not been declared
   48 | template<range R>
      |          ^~~~~
p1027.cpp:49:3: error: expected unqualified-id before 'using'
   49 |   using range_value_t = iter_value_t<iterator_t<R>>;
      |   ^~~~~
p1027.cpp:50:10: error: 'range' has not been declared
   50 | template<range R>
      |          ^~~~~
p1027.cpp:51:3: error: expected unqualified-id before 'using'
   51 |   using range_reference_t = iter_reference_t<iterator_t<R>>;
      |   ^~~~~
p1027.cpp:52:10: error: 'range' has not been declared
   52 | template<range R>
      |          ^~~~~
p1027.cpp:53:3: error: expected unqualified-id before 'using'
   53 |   using range_rvalue_reference_t = iter_rvalue_reference_t<iterator_t<R>>;
      |   ^~~~~
p1027.cpp:55:10: error: 'constexpr' does not name a type
   55 |   inline constexpr bool disable_sized_range = false;
      |          ^~~~~~~~~
p1027.cpp:55:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:57:1: error: 'concept' does not name a type
   57 | concept sized_range = see_below;
      | ^~~~~~~
p1027.cpp:57:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:59:8: error: 'constexpr' does not name a type
   59 | inline constexpr bool enable_view = see below;
      |        ^~~~~~~~~
p1027.cpp:59:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:62:1: error: 'concept' does not name a type
   62 | concept view = see_below;
      | ^~~~~~~
p1027.cpp:62:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:65:1: error: 'concept' does not name a type
   65 | concept output_range = see_below; template<class T>
      | ^~~~~~~
p1027.cpp:65:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:66:1: error: 'concept' does not name a type
   66 | concept input_range = see_below; template<class T>
      | ^~~~~~~
p1027.cpp:66:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:67:1: error: 'concept' does not name a type
   67 | concept forward_range = see_below; template<class T>
      | ^~~~~~~
p1027.cpp:67:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:68:1: error: 'concept' does not name a type
   68 | concept bidirectional_range = see_below; template<class T>
      | ^~~~~~~
p1027.cpp:68:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:69:1: error: 'concept' does not name a type
   69 | concept random_access_range = see_below; template<class T>
      | ^~~~~~~
p1027.cpp:69:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:70:1: error: 'concept' does not name a type
   70 | concept contiguous_range = see_below; template<class T>
      | ^~~~~~~
p1027.cpp:70:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:71:1: error: 'concept' does not name a type
   71 | concept common_range = see_below; template<class T>
      | ^~~~~~~
p1027.cpp:71:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:72:1: error: 'concept' does not name a type
   72 | concept viewable_range = see_below;
      | ^~~~~~~
p1027.cpp:72:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:75:3: error: 'requires' does not name a type
   75 |   requires is_class_v<D> && same_as<D, remove_cv_t<D>>
      |   ^~~~~~~~
p1027.cpp:75:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:78:1: warning: scoped enums only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extension]
   78 | enum class subrange_kind : bool { unsized, sized };
      | ^~~~
p1027.cpp:78:28: warning: scoped enums only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   78 | enum class subrange_kind : bool { unsized, sized };
      |                            ^~~~
p1027.cpp:79:10: error: 'input_or_output_iterator' has not been declared
   79 | template<input_or_output_iterator I, sentinel_for<I> S = I, subrange_kind K = see below> requires (K == subrange_kind::sized || !sized_sentinel_for<S, I>)
      |          ^~~~~~~~~~~~~~~~~~~~~~~~
p1027.cpp:79:38: error: 'sentinel_for' has not been declared
   79 | template<input_or_output_iterator I, sentinel_for<I> S = I, subrange_kind K = see below> requires (K == subrange_kind::sized || !sized_sentinel_for<S, I>)
      |                                      ^~~~~~~~~~~~
p1027.cpp:79:50: error: expected '>' before '<' token
   79 | template<input_or_output_iterator I, sentinel_for<I> S = I, subrange_kind K = see below> requires (K == subrange_kind::sized || !sized_sentinel_for<S, I>)
      |                                                  ^
p1027.cpp:79:99: error: expected constructor, destructor, or type conversion before '(' token
   79 | nput_or_output_iterator I, sentinel_for<I> S = I, subrange_kind K = see below> requires (K == subrange_kind::sized || !sized_sentinel_for<S, I>)
      |                                                                                         ^

p1027.cpp:82:10: error: 'constexpr' does not name a type
   82 |   inline constexpr bool enable_borrowed_range<subrange<I, S, K>> = true;
      |          ^~~~~~~~~
p1027.cpp:82:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:84:10: error: 'range' has not been declared
   84 | template<range R>
      |          ^~~~~
p1027.cpp:85:1: error: expected unqualified-id before 'using'
   85 | using borrowed_iterator_t = see_below;
      | ^~~~~
p1027.cpp:86:10: error: 'range' has not been declared
   86 | template<range R>
      |          ^~~~~
p1027.cpp:87:1: error: expected unqualified-id before 'using'
   87 | using borrowed_subrange_t = see_below;
      | ^~~~~
p1027.cpp:89:19: error: 'input_range' has not been declared
   89 | template<class C, input_range R, class... Args> requires (!view<C>)
      |                   ^~~~~~~~~~~
p1027.cpp:89:39: warning: variadic templates only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   89 | template<class C, input_range R, class... Args> requires (!view<C>)
      |                                       ^~~
p1027.cpp:89:58: error: expected constructor, destructor, or type conversion before '(' token
   89 | template<class C, input_range R, class... Args> requires (!view<C>)
      |                                                          ^
p1027.cpp:91:24: warning: variadic templates only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   91 | template<template<class...> class C, input_range R, class... Args>
      |                        ^~~
p1027.cpp:91:38: error: 'input_range' has not been declared
   91 | template<template<class...> class C, input_range R, class... Args>
      |                                      ^~~~~~~~~~~
p1027.cpp:91:58: warning: variadic templates only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   91 | template<template<class...> class C, input_range R, class... Args>
      |                                                          ^~~
p1027.cpp:92:1: error: 'constexpr' does not name a type
   92 | constexpr auto to(R&& r, Args&&... args) -> see below; template<class C, class... Args> requires (!view<C>)
      | ^~~~~~~~~
p1027.cpp:92:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:92:79: warning: variadic templates only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   92 | constexpr auto to(R&& r, Args&&... args) -> see below; template<class C, class... Args> requires (!view<C>)
      |                                                                               ^~~
p1027.cpp:92:98: error: expected constructor, destructor, or type conversion before '(' token
   92 | r auto to(R&& r, Args&&... args) -> see below; template<class C, class... Args> requires (!view<C>)
      |                                                                                          ^

p1027.cpp:93:72: warning: variadic templates only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   93 | constexpr auto to(Args&&... args) -> see below; template<template<class...> class C, class... Args> constexpr auto to(Args&&... args) -> see below;
      |                                                                        ^~~
p1027.cpp:93:91: warning: variadic templates only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   93 | nstexpr auto to(Args&&... args) -> see below; template<template<class...> class C, class... Args> constexpr auto to(Args&&... args) -> see below;
      |                                                                                         ^~~

p1027.cpp:93:101: error: 'constexpr' does not name a type
   93 | to to(Args&&... args) -> see below; template<template<class...> class C, class... Args> constexpr auto to(Args&&... args) -> see below;
      |                                                                                         ^~~~~~~~~

p1027.cpp:93:101: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:96:3: error: 'requires' does not name a type
   96 |   requires is_object_v<T>
      |   ^~~~~~~~
p1027.cpp:96:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:99:10: error: 'constexpr' does not name a type
   99 |   inline constexpr bool enable_borrowed_range<empty_view<T>> = true;
      |          ^~~~~~~~~
p1027.cpp:99:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:102:12: error: 'constexpr' does not name a type
  102 |     inline constexpr empty_view<T> empty{};
      |            ^~~~~~~~~
p1027.cpp:102:12: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:105:10: error: 'copy_constructible' has not been declared
  105 | template<copy_constructible T>
      |          ^~~~~~~~~~~~~~~~~~
p1027.cpp:106:3: error: 'requires' does not name a type
  106 |   requires is_object_v<T>
      |   ^~~~~~~~
p1027.cpp:106:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:108:26: error: 'constexpr' does not name a type
  108 | namespace views { inline constexpr unspecified single = unspecified; } template<bool Const, class T>
      |                          ^~~~~~~~~
p1027.cpp:108:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:109:1: error: expected unqualified-id before 'using'
  109 | using maybe-const = conditional_t<Const, const T, T>; // exposition only
      | ^~~~~
p1027.cpp:111:10: error: 'weakly_incrementable' has not been declared
  111 | template<weakly_incrementable W, semiregular Bound = unreachable_sentinel_t>
      |          ^~~~~~~~~~~~~~~~~~~~
p1027.cpp:111:34: error: 'semiregular' has not been declared
  111 | template<weakly_incrementable W, semiregular Bound = unreachable_sentinel_t>
      |                                  ^~~~~~~~~~~
p1027.cpp:111:54: error: 'unreachable_sentinel_t' was not declared in this scope
  111 | template<weakly_incrementable W, semiregular Bound = unreachable_sentinel_t>
      |                                                      ^~~~~~~~~~~~~~~~~~~~~~
p1027.cpp:112:1: error: 'requires' does not name a type
  112 | requires weakly-equality-comparable-with<W, Bound> && copyable<W> class iota_view;
      | ^~~~~~~~
p1027.cpp:112:1: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:114:10: error: 'constexpr' does not name a type
  114 |   inline constexpr bool enable_borrowed_range<iota_view<W, Bound>> = true;
      |          ^~~~~~~~~
p1027.cpp:114:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:115:26: error: 'constexpr' does not name a type
  115 | namespace views { inline constexpr unspecified iota = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:115:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:117:10: error: 'movable' has not been declared
  117 | template<movable Val, class CharT, class Traits = char_traits<CharT>>
      |          ^~~~~~~
p1027.cpp:117:68: error: spurious '>>', use '>' to terminate a template argument list
  117 | template<movable Val, class CharT, class Traits = char_traits<CharT>>
      |                                                                    ^~
p1027.cpp:118:1: error: expected '>' before 'requires'
  118 | requires see below class basic_istream_view; template<class Val>
      | ^~~~~~~~
p1027.cpp:118:44: error: expected unqualified-id before ';' token
  118 | requires see below class basic_istream_view; template<class Val>
      |                                            ^
p1027.cpp:119:3: error: expected unqualified-id before 'using'
  119 |   using istream_view = basic_istream_view<Val, char>;
      |   ^~~~~
p1027.cpp:121:1: error: expected unqualified-id before 'using'
  121 | using wistream_view = basic_istream_view<Val, wchar_t>;
      | ^~~~~
p1027.cpp:122:44: error: 'constexpr' does not name a type
  122 | namespace views { template<class T> inline constexpr unspecified istream = unspecified; }
      |                                            ^~~~~~~~~
p1027.cpp:122:44: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:125:3: error: 'requires' does not name a type
  125 |   requires is_class_v<D> && same_as<D, remove_cv_t<D>>
      |   ^~~~~~~~
p1027.cpp:125:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:129:8: error: 'constexpr' does not name a type
  129 | inline constexpr unspecified all = unspecified ;
      |        ^~~~~~~~~
p1027.cpp:129:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:130:12: error: 'viewable_range' has not been declared
  130 |   template<viewable_range R>
      |            ^~~~~~~~~~~~~~
p1027.cpp:131:5: error: expected unqualified-id before 'using'
  131 |     using all_t = decltype(all(declval<R>()));
      |     ^~~~~
p1027.cpp:133:10: error: 'range' has not been declared
  133 | template<range R>
      |          ^~~~~
p1027.cpp:134:3: error: 'requires' does not name a type
  134 |   requires is_object_v<R>
      |   ^~~~~~~~
p1027.cpp:134:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:137:10: error: 'constexpr' does not name a type
  137 |   inline constexpr bool enable_borrowed_range<ref_view<T>> = true;
      |          ^~~~~~~~~
p1027.cpp:137:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:139:10: error: 'range' has not been declared
  139 | template<range R>
      |          ^~~~~
p1027.cpp:140:1: error: 'requires' does not name a type
  140 | requires see below class owning_view;
      | ^~~~~~~~
p1027.cpp:140:1: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:142:10: error: 'constexpr' does not name a type
  142 |   inline constexpr bool enable_borrowed_range<owning_view<T>> = enable_borrowed_range<T>;
      |          ^~~~~~~~~
p1027.cpp:142:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:144:10: error: 'input_range' has not been declared
  144 | template<input_range V, indirect_unary_predicate<iterator_t<V>> Pred>
      |          ^~~~~~~~~~~
p1027.cpp:144:25: error: 'indirect_unary_predicate' has not been declared
  144 | template<input_range V, indirect_unary_predicate<iterator_t<V>> Pred>
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~
p1027.cpp:144:49: error: expected '>' before '<' token
  144 | template<input_range V, indirect_unary_predicate<iterator_t<V>> Pred>
      |                                                 ^
p1027.cpp:146:18: error: expected unqualified-id before ';' token
  146 | class filter_view;
      |                  ^
p1027.cpp:147:26: error: 'constexpr' does not name a type
  147 | namespace views { inline constexpr unspecified filter = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:147:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:149:10: error: 'input_range' has not been declared
  149 | template<input_range V, copy_constructible F>
      |          ^~~~~~~~~~~
p1027.cpp:149:25: error: 'copy_constructible' has not been declared
  149 | template<input_range V, copy_constructible F>
      |                         ^~~~~~~~~~~~~~~~~~
p1027.cpp:150:1: error: 'requires' does not name a type
  150 | requires view<V> && is_object_v<F> &&
      | ^~~~~~~~
p1027.cpp:150:1: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:153:26: error: 'constexpr' does not name a type
  153 | namespace views { inline constexpr unspecified transform = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:153:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:155:10: error: 'view' has not been declared
  155 | template<view> class take_view;
      |          ^~~~
p1027.cpp:157:10: error: 'constexpr' does not name a type
  157 |   inline constexpr bool enable_borrowed_range<take_view<T>> = enable_borrowed_range<T>;
      |          ^~~~~~~~~
p1027.cpp:157:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:158:26: error: 'constexpr' does not name a type
  158 | namespace views { inline constexpr unspecified take = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:158:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:160:10: error: 'view' has not been declared
  160 | template<view V, class Pred>
      |          ^~~~
p1027.cpp:161:3: error: 'requires' does not name a type
  161 |   requires input_range<V> && is_object_v<Pred> &&
      |   ^~~~~~~~
p1027.cpp:161:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:164:26: error: 'constexpr' does not name a type
  164 | namespace views { inline constexpr unspecified take_while = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:164:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:166:10: error: 'view' has not been declared
  166 | template<view V>
      |          ^~~~
p1027.cpp:169:11: error: 'constexpr' does not name a type
  169 |    inline constexpr bool enable_borrowed_range<drop_view<T>> = enable_borrowed_range<T>;
      |           ^~~~~~~~~
p1027.cpp:169:11: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:170:26: error: 'constexpr' does not name a type
  170 | namespace views { inline constexpr unspecified drop = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:170:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:172:10: error: 'view' has not been declared
  172 | template<view V, class Pred>
      |          ^~~~
p1027.cpp:173:4: error: 'requires' does not name a type
  173 |    requires input_range<V> && is_object_v<Pred> &&
      |    ^~~~~~~~
p1027.cpp:173:4: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:177:11: error: 'constexpr' does not name a type
  177 |    inline constexpr bool enable_borrowed_range<drop_while_view<T, Pred>> =
      |           ^~~~~~~~~
p1027.cpp:177:11: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:179:26: error: 'constexpr' does not name a type
  179 | namespace views { inline constexpr unspecified drop_while = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:179:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:181:10: error: 'input_range' has not been declared
  181 | template<input_range V>
      |          ^~~~~~~~~~~
p1027.cpp:182:4: error: 'requires' does not name a type
  182 |    requires view<V> && input_range<range_reference_t<V>>
      |    ^~~~~~~~
p1027.cpp:182:4: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:184:26: error: 'constexpr' does not name a type
  184 | namespace views { inline constexpr unspecified join = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:184:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:187:1: error: 'concept' does not name a type
  187 | concept compatible-joinable-ranges = see below ; // exposition only
      | ^~~~~~~
p1027.cpp:187:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:188:11: error: 'input_range' has not been declared
  188 |  template<input_range V, forward_range Pattern>
      |           ^~~~~~~~~~~
p1027.cpp:188:26: error: 'forward_range' has not been declared
  188 |  template<input_range V, forward_range Pattern>
      |                          ^~~~~~~~~~~~~
p1027.cpp:189:4: error: 'requires' does not name a type
  189 |    requires view<V> && input_range<range_reference_t<V>>
      |    ^~~~~~~~
p1027.cpp:189:4: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:192:26: error: 'constexpr' does not name a type
  192 | namespace views { inline constexpr unspecified join_with = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:192:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:195:1: error: 'concept' does not name a type
  195 | concept tiny-range = see below ; // exposition only
      | ^~~~~~~
p1027.cpp:195:1: note: 'concept' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:196:11: error: 'input_range' has not been declared
  196 |  template<input_range V, forward_range Pattern>
      |           ^~~~~~~~~~~
p1027.cpp:196:26: error: 'forward_range' has not been declared
  196 |  template<input_range V, forward_range Pattern>
      |                          ^~~~~~~~~~~~~
p1027.cpp:197:4: error: 'requires' does not name a type
  197 |    requires view<V> && view<Pattern> &&
      |    ^~~~~~~~
p1027.cpp:197:4: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:201:10: error: 'forward_range' has not been declared
  201 | template<forward_range V, forward_range Pattern>
      |          ^~~~~~~~~~~~~
p1027.cpp:201:27: error: 'forward_range' has not been declared
  201 | template<forward_range V, forward_range Pattern>
      |                           ^~~~~~~~~~~~~
p1027.cpp:202:3: error: 'requires' does not name a type
  202 |   requires view<V> && view<Pattern> &&
      |   ^~~~~~~~
p1027.cpp:202:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:206:8: error: 'constexpr' does not name a type
  206 | inline constexpr unspecified inline constexpr unspecified
      |        ^~~~~~~~~
p1027.cpp:206:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:208:1: error: 'lazy_split' does not name a type
  208 | lazy_split = unspecified ; split = unspecified ;
      | ^~~~~~~~~~
p1027.cpp:208:28: error: 'split' does not name a type
  208 | lazy_split = unspecified ; split = unspecified ;
      |                            ^~~~~
p1027.cpp:210:26: error: 'constexpr' does not name a type
  210 | namespace views { inline constexpr unspecified counted = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:210:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:212:10: error: 'view' has not been declared
  212 | template<view V>
      |          ^~~~
p1027.cpp:213:12: error: expected constructor, destructor, or type conversion before '(' token
  213 |   requires (!common_range<V> && copyable<iterator_t<V>>)
      |            ^
p1027.cpp:216:10: error: 'constexpr' does not name a type
  216 |   inline constexpr bool enable_borrowed_range<common_view<T>> = enable_borrowed_range<T>;
      |          ^~~~~~~~~
p1027.cpp:216:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:217:26: error: 'constexpr' does not name a type
  217 | namespace views { inline constexpr unspecified common = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:217:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:219:10: error: 'view' has not been declared
  219 | template<view V>
      |          ^~~~
p1027.cpp:220:3: error: 'requires' does not name a type
  220 |   requires bidirectional_range<V>
      |   ^~~~~~~~
p1027.cpp:220:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:223:10: error: 'constexpr' does not name a type
  223 |   inline constexpr bool enable_borrowed_range<reverse_view<T>> = enable_borrowed_range<T>;
      |          ^~~~~~~~~
p1027.cpp:223:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:224:26: error: 'constexpr' does not name a type
  224 | namespace views { inline constexpr unspecified reverse = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:224:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:226:10: error: 'input_range' has not been declared
  226 | template<input_range V, size_t N>
      |          ^~~~~~~~~~~
p1027.cpp:227:1: error: 'requires' does not name a type
  227 | requires see below class elements_view;
      | ^~~~~~~~
p1027.cpp:227:1: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:229:10: error: 'constexpr' does not name a type
  229 |   inline constexpr bool enable_borrowed_range<elements_view<T, N>> = enable_borrowed_range<T>;
      |          ^~~~~~~~~
p1027.cpp:229:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:231:3: error: expected unqualified-id before 'using'
  231 |   using keys_view = elements_view<R, 0>;
      |   ^~~~~
p1027.cpp:233:3: error: expected unqualified-id before 'using'
  233 |   using values_view = elements_view<R, 1>;
      |   ^~~~~
p1027.cpp:236:8: error: 'constexpr' does not name a type
  236 | inline constexpr unspecified elements = unspecified ; inline constexpr auto keys = elements<0>;
      |        ^~~~~~~~~
p1027.cpp:236:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:236:62: error: 'constexpr' does not name a type
  236 | inline constexpr unspecified elements = unspecified ; inline constexpr auto keys = elements<0>;
      |                                                              ^~~~~~~~~
p1027.cpp:236:62: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:237:8: error: 'constexpr' does not name a type
  237 | inline constexpr auto values = elements<1>;
      |        ^~~~~~~~~
p1027.cpp:237:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:240:10: error: 'input_range' has not been declared
  240 | template<input_range... Views>
      |          ^~~~~~~~~~~
p1027.cpp:240:25: warning: variadic templates only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  240 | template<input_range... Views>
      |                         ^~~~~
p1027.cpp:241:12: error: expected constructor, destructor, or type conversion before '(' token
  241 |   requires (view<Views> && ...) && (sizeof...(Views) > 0)
      |            ^
p1027.cpp:243:15: warning: variadic templates only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  243 | template<class... Views>
      |               ^~~
p1027.cpp:244:10: error: 'constexpr' does not name a type
  244 |   inline constexpr bool enable_borrowed_range<zip_view<Views...>> =
      |          ^~~~~~~~~
p1027.cpp:244:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:246:26: error: 'constexpr' does not name a type
  246 | namespace views { inline constexpr unspecified zip = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:246:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:248:10: error: 'copy_constructible' has not been declared
  248 | template<copy_constructible F, input_range... Views>
      |          ^~~~~~~~~~~~~~~~~~
p1027.cpp:248:32: error: 'input_range' has not been declared
  248 | template<copy_constructible F, input_range... Views>
      |                                ^~~~~~~~~~~
p1027.cpp:248:47: warning: variadic templates only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  248 | template<copy_constructible F, input_range... Views>
      |                                               ^~~~~
p1027.cpp:249:10: error: expected constructor, destructor, or type conversion before '(' token
  249 | requires (view<Views> && ...) && (sizeof...(Views) > 0) && is_object_v<F> && regular_invocable<F&, range_reference_t<Views>...> && can-reference<invoke_result_t<F&, range_reference_t<Views>...>>
      |          ^
p1027.cpp:251:26: error: 'constexpr' does not name a type
  251 | namespace views { inline constexpr unspecified zip_transform = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:251:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:253:10: error: 'forward_range' has not been declared
  253 | template<forward_range V, size_t N>
      |          ^~~~~~~~~~~~~
p1027.cpp:254:3: error: 'requires' does not name a type
  254 |   requires view<V> && (N > 0)
      |   ^~~~~~~~
p1027.cpp:254:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:257:10: error: 'constexpr' does not name a type
  257 |   inline constexpr bool enable_borrowed_range<adjacent_view<V, N>> =    enable_borrowed_range<V>;
      |          ^~~~~~~~~
p1027.cpp:257:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:260:8: error: 'constexpr' does not name a type
  260 | inline constexpr unspecified adjacent = unspecified ; inline constexpr auto pairwise = adjacent<2>;
      |        ^~~~~~~~~
p1027.cpp:260:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:260:62: error: 'constexpr' does not name a type
  260 | inline constexpr unspecified adjacent = unspecified ; inline constexpr auto pairwise = adjacent<2>;
      |                                                              ^~~~~~~~~
p1027.cpp:260:62: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:263:10: error: 'forward_range' has not been declared
  263 | template<forward_range V, copy_constructible F, size_t N>
      |          ^~~~~~~~~~~~~
p1027.cpp:263:27: error: 'copy_constructible' has not been declared
  263 | template<forward_range V, copy_constructible F, size_t N>
      |                           ^~~~~~~~~~~~~~~~~~
p1027.cpp:264:1: error: 'requires' does not name a type
  264 | requires see below
      | ^~~~~~~~
p1027.cpp:264:1: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:268:8: error: 'constexpr' does not name a type
  268 | inline constexpr unspecified adjacent_transform = unspecified ; inline constexpr auto pairwise_transform = adjacent_transform<2>;
      |        ^~~~~~~~~
p1027.cpp:268:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:268:72: error: 'constexpr' does not name a type
  268 | inline constexpr unspecified adjacent_transform = unspecified ; inline constexpr auto pairwise_transform = adjacent_transform<2>;
      |                                                                        ^~~~~~~~~
p1027.cpp:268:72: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:271:10: error: 'view' has not been declared
  271 | template<view V>
      |          ^~~~
p1027.cpp:272:5: error: 'requires' does not name a type
  272 |     requires input_range<V>
      |     ^~~~~~~~
p1027.cpp:272:5: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:274:12: error: 'view' has not been declared
  274 |   template<view V>
      |            ^~~~
p1027.cpp:275:5: error: 'requires' does not name a type
  275 |     requires forward_range<V>
      |     ^~~~~~~~
p1027.cpp:275:5: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:278:12: error: 'constexpr' does not name a type
  278 |     inline constexpr bool enable_borrowed_range<chunk_view<V>> = forward_range<V> && enable_borrowed_range<V>;
      |            ^~~~~~~~~
p1027.cpp:278:12: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:279:26: error: 'constexpr' does not name a type
  279 | namespace views { inline constexpr unspecified chunk = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:279:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:281:10: error: 'view' has not been declared
  281 | template<view V>
      |          ^~~~
p1027.cpp:282:5: error: 'requires' does not name a type
  282 |     requires forward_range<V>
      |     ^~~~~~~~
p1027.cpp:282:5: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1027.cpp:285:12: error: 'constexpr' does not name a type
  285 |     inline constexpr bool enable_borrowed_range<slide_view<V>> = enable_borrowed_range<V>;
      |            ^~~~~~~~~
p1027.cpp:285:12: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:286:26: error: 'constexpr' does not name a type
  286 | namespace views { inline constexpr unspecified slide = unspecified; }
      |                          ^~~~~~~~~
p1027.cpp:286:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:288:10: error: 'forward_range' has not been declared
  288 | template<forward_range V, indirect_binary_predicate<iterator_t<V>, iterator_t<V>> Pred>
      |          ^~~~~~~~~~~~~
p1027.cpp:288:27: error: 'indirect_binary_predicate' has not been declared
  288 | template<forward_range V, indirect_binary_predicate<iterator_t<V>, iterator_t<V>> Pred>
      |                           ^~~~~~~~~~~~~~~~~~~~~~~~~
p1027.cpp:288:52: error: expected '>' before '<' token
  288 | template<forward_range V, indirect_binary_predicate<iterator_t<V>, iterator_t<V>> Pred>
      |                                                    ^
p1027.cpp:290:22: error: expected unqualified-id before ';' token
  290 |   class chunk_by_view;
      |                      ^
p1027.cpp:291:26: error: 'constexpr' does not name a type
  291 | namespace views { inline constexpr unspecified chunk_by = unspecified; } }
      |                          ^~~~~~~~~
p1027.cpp:291:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1027.cpp:297:29: error: 'subrange' is not a member of 'std::ranges'; did you mean 'subrange_kind'?
  297 |   struct tuple_size<ranges::subrange<I, S, K>>
      |                             ^~~~~~~~
      |                             subrange_kind
p1027.cpp:297:29: error: 'subrange' is not a member of 'std::ranges'; did you mean 'subrange_kind'?
  297 |   struct tuple_size<ranges::subrange<I, S, K>>
      |                             ^~~~~~~~
      |                             subrange_kind
p1027.cpp:297:45: error: spurious '>>', use '>' to terminate a template argument list
  297 |   struct tuple_size<ranges::subrange<I, S, K>>
      |                                             ^~
p1027.cpp:297:45: error: wrong number of template arguments (3, should be 1)
p1027.cpp:294:28: note: provided for 'template<class T> struct std::tuple_size'
  294 |   template<class T> struct tuple_size;
      |                            ^~~~~~~~~~
p1027.cpp:298:24: error: expected template-name before '<' token
  298 |     : integral_constant<size_t, 2> {};
      |                        ^
p1027.cpp:300:35: error: 'subrange' is not a member of 'std::ranges'; did you mean 'subrange_kind'?
  300 |   struct tuple_element<0, ranges::subrange<I, S, K>> {
      |                                   ^~~~~~~~
      |                                   subrange_kind
p1027.cpp:300:35: error: 'subrange' is not a member of 'std::ranges'; did you mean 'subrange_kind'?
  300 |   struct tuple_element<0, ranges::subrange<I, S, K>> {
      |                                   ^~~~~~~~
      |                                   subrange_kind
p1027.cpp:300:51: error: spurious '>>', use '>' to terminate a template argument list
  300 |   struct tuple_element<0, ranges::subrange<I, S, K>> {
      |                                                   ^~
p1027.cpp:300:51: error: wrong number of template arguments (4, should be 2)
p1027.cpp:295:38: note: provided for 'template<long unsigned int I, class T> struct std::tuple_element'
  295 |   template<size_t I, class T> struct tuple_element;
      |                                      ^~~~~~~~~~~~~
p1027.cpp:307:14: error: expected constructor, destructor, or type conversion before '(' token
  307 | ranges::begin(E) is expression-equivalent to auto(t.begin()).
      |              ^
p1027.cpp:310:23: warning: 'auto' changes meaning in C++11; please remove it [-Wc++11-compat]
  310 |      void begin(const auto&) = delete;
      |                       ^~~~
      |                       ----
p1027.cpp:310:27: error: ISO C++ forbids declaration of 'parameter' with no type [-fpermissive]
  310 |      void begin(const auto&) = delete;
      |                           ^
p1027.cpp:310:32: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++1' [-Wc++11-extensions]
  310 |      void begin(const auto&) = delete;
      |                                ^~~~~~
p1027.cpp:312:3: warning: 'auto' changes meaning in C++11; please remove it [-Wc++11-compat]
  312 |   auto(begin(t)) with overload resolution performed in the above context.
      |   ^~~~
      |   ----
p1027.cpp:312:13: error: expected ')' before '(' token
  312 |   auto(begin(t)) with overload resolution performed in the above context.
      |       ~     ^
      |             )
p1027.cpp:318:46: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
  318 |        struct tuple_element<0, const ranges::subrange<I, S, K>> {
      |                                              ^~~~~~~~
p1027.cpp:318:62: error: template argument 2 is invalid
  318 |        struct tuple_element<0, const ranges::subrange<I, S, K>> {
      |                                                              ^~
p1027.cpp:322:46: error: ISO C++ forbids declaration of 'type name' with no type [-fpermissive]
  322 |        struct tuple_element<1, const ranges::subrange<I, S, K>> {
      |                                              ^~~~~~~~
p1027.cpp:322:62: error: template argument 2 is invalid
  322 |        struct tuple_element<1, const ranges::subrange<I, S, K>> {
      |                                                              ^~
p1027.cpp:325:56: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++1' [-Wc++11-extensions]
  325 |        struct from_range_t { explicit from_range_t() = default; };
      |                                                        ^~~~~~~
p1027.cpp:326:15: error: 'constexpr' does not name a type
  326 |        inline constexpr from_range_t from_range{};
      |               ^~~~~~~~~
p1027.cpp:326:15: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'

$ g++ p1027.cpp -std=2b -o p1027g -I. -Wall
p1027.cpp:23:18: error: 'unspecified' does not name a type
   23 | inline constexpr unspecified begin = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:24:18: error: 'unspecified' does not name a type
   24 | inline constexpr unspecified cbegin end = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:25:18: error: 'unspecified' does not name a type
   25 | inline constexpr unspecified cend =   using range_difference_t
      |                  ^~~~~~~~~~~
p1027.cpp:27:18: error: 'unspecified' does not name a type
   27 | inline constexpr unspecified rend = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:28:18: error: 'unspecified' does not name a type
   28 | inline constexpr unspecified crbegin = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:29:18: error: 'unspecified' does not name a type
   29 | inline constexpr unspecified crend = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:30:18: error: 'unspecified' does not name a type
   30 | inline constexpr unspecified size = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:31:18: error: 'unspecified' does not name a type
   31 | inline constexpr unspecified ssize = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:32:18: error: 'unspecified' does not name a type
   32 | inline constexpr unspecified empty = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:33:18: error: 'unspecified' does not name a type
   33 | inline constexpr unspecified data = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:34:18: error: 'unspecified' does not name a type
   34 | inline constexpr unspecified data = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:35:18: error: 'unspecified' does not name a type
   35 | inline constexpr unspecified cdata = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:37:1: warning: C++20 concept definition syntax is 'concept <name> = <expr>'
   37 | concept range = see below; template<class T>
      | ^~~~~~~
p1027.cpp:37:9: error: expected 'auto' or 'decltype(auto)' after 'range'
   37 | concept range = see below; template<class T>
      |         ^~~~~
p1027.cpp:37:15: error: expected unqualified-id before '=' token
   37 | concept range = see below; template<class T>
      |               ^
p1027.cpp:38:25: error: redefinition of 'template<class T> constexpr const bool std::ranges::enable_borrowed_range'
   38 |   inline constexpr bool enable_borrowed_range = false;
      |                         ^~~~~~~~~~~~~~~~~~~~~
In file included from /usr/local/include/c++/12.1.0/string_view:50,
                 from /usr/local/include/c++/12.1.0/bits/basic_string.h:48,
                 from /usr/local/include/c++/12.1.0/string:53,
                 from /usr/local/include/c++/12.1.0/bits/locale_classes.h:40,
                 from /usr/local/include/c++/12.1.0/bits/ios_base.h:41,
                 from /usr/local/include/c++/12.1.0/ios:42,
                 from /usr/local/include/c++/12.1.0/ostream:38,
                 from /usr/local/include/c++/12.1.0/iostream:39,
                 from N4910.h:2,
                 from p1027.cpp:10:
/usr/local/include/c++/12.1.0/bits/ranges_base.h:50:27: note: 'template<class _Tp> constexpr const bool std::ranges::enable_borrowed_range<_Tp>' previously declared here
   50 |     inline constexpr bool enable_borrowed_range = false;
      |                           ^~~~~~~~~~~~~~~~~~~~~
p1027.cpp:40:26: error: 'see' was not declared in this scope
   40 | concept borrowed_range = see below;
      |                          ^~~
p1027.cpp:40:9: error: redefinition of 'template<class T> concept std::ranges::borrowed_range'
   40 | concept borrowed_range = see below;
      |         ^~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:591:13: note: 'template<class _Tp> concept std::ranges::borrowed_range' previously declared here
  591 |     concept borrowed_range
      |             ^~~~~~~~~~~~~~
p1027.cpp:42:9: error: conflicting declaration of template 'template<class T> using iterator_t = decltype (std::ranges::__cust::begin(declval<T&>()))'
   42 |   using iterator_t = decltype(ranges::begin(declval<T&>()));
      |         ^~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:595:11: note: previous declaration 'template<class _Tp> using iterator_t = std::__detail::__range_iter_t<_Container>'
  595 |     using iterator_t = std::__detail::__range_iter_t<_Tp>;
      |           ^~~~~~~~~~
p1027.cpp:46:10: error: declaration of template parameter 'R' shadows template parameter
   46 | template<sized_range R>
      |          ^~~~~~~~~~~
p1027.cpp:45:10: note: template parameter 'R' declared here
   45 | template<range R>
      |          ^~~~~
p1027.cpp:47:9: error: too many template-parameter-lists
   47 |   using range_size_t = decltype(ranges::size(declval<R&>()));
      |         ^~~~~~~~~~~~
p1027.cpp:55:25: error: 'constexpr const bool std::ranges::disable_sized_range' redeclared as different kind of entity
   55 |   inline constexpr bool disable_sized_range = false;
      |                         ^~~~~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:47:27: note: previous declaration 'template<class> constexpr const bool std::ranges::disable_sized_range< <template-parameter-1-1> >'
   47 |     inline constexpr bool disable_sized_range = false;
      |                           ^~~~~~~~~~~~~~~~~~~
p1027.cpp:57:23: error: 'see_below' was not declared in this scope
   57 | concept sized_range = see_below;
      |                       ^~~~~~~~~
p1027.cpp:57:9: error: redefinition of 'template<class T> concept std::ranges::sized_range'
   57 | concept sized_range = see_below;
      |         ^~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:615:13: note: 'template<class _Tp> concept std::ranges::sized_range' previously declared here
  615 |     concept sized_range = range<_Tp>
      |             ^~~~~~~~~~~
p1027.cpp:59:23: error: 'constexpr const bool std::ranges::enable_view' redeclared as different kind of entity
   59 | inline constexpr bool enable_view = see below;
      |                       ^~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:644:27: note: previous declaration 'template<class _Tp> constexpr const bool std::ranges::enable_view<_Tp>'
  644 |     inline constexpr bool enable_view = derived_from<_Tp, view_base>
      |                           ^~~~~~~~~~~
p1027.cpp:59:37: error: 'see' was not declared in this scope
   59 | inline constexpr bool enable_view = see below;
      |                                     ^~~
p1027.cpp:60:8: error: redefinition of 'struct std::ranges::view_base'
   60 | struct view_base {};
      |        ^~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:640:10: note: previous definition of 'struct std::ranges::view_base'
  640 |   struct view_base { };
      |          ^~~~~~~~~
p1027.cpp:62:16: error: 'see_below' was not declared in this scope
   62 | concept view = see_below;
      |                ^~~~~~~~~
p1027.cpp:62:9: error: redefinition of 'template<class T> concept std::ranges::view'
   62 | concept view = see_below;
      |         ^~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:649:13: note: 'template<class _Tp> concept std::ranges::view' previously declared here
  649 |     concept view
      |             ^~~~
p1027.cpp:65:24: error: 'see_below' was not declared in this scope
   65 | concept output_range = see_below; template<class T>
      |                        ^~~~~~~~~
p1027.cpp:65:9: error: redefinition of 'template<class R, class T> concept std::ranges::output_range'
   65 | concept output_range = see_below; template<class T>
      |         ^~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:656:13: note: 'template<class _Range, class _Tp> concept std::ranges::output_range' previously declared here
  656 |     concept output_range
      |             ^~~~~~~~~~~~
p1027.cpp:66:23: error: 'see_below' was not declared in this scope
   66 | concept input_range = see_below; template<class T>
      |                       ^~~~~~~~~
p1027.cpp:66:9: error: redefinition of 'template<class T> concept std::ranges::input_range'
   66 | concept input_range = see_below; template<class T>
      |         ^~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:661:13: note: 'template<class _Tp> concept std::ranges::input_range' previously declared here
  661 |     concept input_range = range<_Tp> && input_iterator<iterator_t<_Tp>>;
      |             ^~~~~~~~~~~
p1027.cpp:67:25: error: 'see_below' was not declared in this scope
   67 | concept forward_range = see_below; template<class T>
      |                         ^~~~~~~~~
p1027.cpp:67:9: error: redefinition of 'template<class T> concept std::ranges::forward_range'
   67 | concept forward_range = see_below; template<class T>
      |         ^~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:665:13: note: 'template<class _Tp> concept std::ranges::forward_range' previously declared here
  665 |     concept forward_range
      |             ^~~~~~~~~~~~~
p1027.cpp:68:31: error: 'see_below' was not declared in this scope
   68 | concept bidirectional_range = see_below; template<class T>
      |                               ^~~~~~~~~
p1027.cpp:68:9: error: redefinition of 'template<class T> concept std::ranges::bidirectional_range'
   68 | concept bidirectional_range = see_below; template<class T>
      |         ^~~~~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:670:13: note: 'template<class _Tp> concept std::ranges::bidirectional_range' previously declared here
  670 |     concept bidirectional_range
      |             ^~~~~~~~~~~~~~~~~~~
p1027.cpp:69:31: error: 'see_below' was not declared in this scope
   69 | concept random_access_range = see_below; template<class T>
      |                               ^~~~~~~~~
p1027.cpp:69:9: error: redefinition of 'template<class T> concept std::ranges::random_access_range'
   69 | concept random_access_range = see_below; template<class T>
      |         ^~~~~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:675:13: note: 'template<class _Tp> concept std::ranges::random_access_range' previously declared here
  675 |     concept random_access_range
      |             ^~~~~~~~~~~~~~~~~~~
p1027.cpp:70:28: error: 'see_below' was not declared in this scope
   70 | concept contiguous_range = see_below; template<class T>
      |                            ^~~~~~~~~
p1027.cpp:70:9: error: redefinition of 'template<class T> concept std::ranges::contiguous_range'
   70 | concept contiguous_range = see_below; template<class T>
      |         ^~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:680:13: note: 'template<class _Tp> concept std::ranges::contiguous_range' previously declared here
  680 |     concept contiguous_range
      |             ^~~~~~~~~~~~~~~~
p1027.cpp:71:24: error: 'see_below' was not declared in this scope
   71 | concept common_range = see_below; template<class T>
      |                        ^~~~~~~~~
p1027.cpp:71:9: error: redefinition of 'template<class T> concept std::ranges::common_range'
   71 | concept common_range = see_below; template<class T>
      |         ^~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:689:13: note: 'template<class _Tp> concept std::ranges::common_range' previously declared here
  689 |     concept common_range
      |             ^~~~~~~~~~~~
p1027.cpp:72:26: error: 'see_below' was not declared in this scope
   72 | concept viewable_range = see_below;
      |                          ^~~~~~~~~
p1027.cpp:72:9: error: redefinition of 'template<class T> concept std::ranges::viewable_range'
   72 | concept viewable_range = see_below;
      |         ^~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:703:13: note: 'template<class _Tp> concept std::ranges::viewable_range' previously declared here
  703 |     concept viewable_range = range<_Tp>
      |             ^~~~~~~~~~~~~~
p1027.cpp:79:79: error: 'see' was not declared in this scope
   79 | template<input_or_output_iterator I, sentinel_for<I> S = I, subrange_kind K = see below> requires (K == subrange_kind::sized || !sized_sentinel_for<S, I>)
      |                                                                               ^~~
p1027.cpp:79:83: error: expected '>' before 'below'
   79 | template<input_or_output_iterator I, sentinel_for<I> S = I, subrange_kind K = see below> requires (K == subrange_kind::sized || !sized_sentinel_for<S, I>)
      |                                                                                   ^~~~~
p1027.cpp:85:29: error: 'see_below' does not name a type
   85 | using borrowed_iterator_t = see_below;
      |                             ^~~~~~~~~
p1027.cpp:87:29: error: 'see_below' does not name a type
   87 | using borrowed_subrange_t = see_below;
      |                             ^~~~~~~~~
p1027.cpp:92:45: error: 'see' does not name a type
   92 | constexpr auto to(R&& r, Args&&... args) -> see below; template<class C, class... Args> requires (!view<C>)
      |                                             ^~~
p1027.cpp:92:49: error: expected initializer before 'below'
   92 | constexpr auto to(R&& r, Args&&... args) -> see below; template<class C, class... Args> requires (!view<C>)
      |                                                 ^~~~~
p1027.cpp:93:38: error: 'see' does not name a type
   93 | constexpr auto to(Args&&... args) -> see below; template<template<class...> class C, class... Args> constexpr auto to(Args&&... args) -> see below;
      |                                      ^~~
p1027.cpp:93:42: error: expected initializer before 'below'
   93 | constexpr auto to(Args&&... args) -> see below; template<template<class...> class C, class... Args> constexpr auto to(Args&&... args) -> see below;
      |                                          ^~~~~
p1027.cpp:93:138: error: 'see' does not name a type
   93 | template<template<class...> class C, class... Args> constexpr auto to(Args&&... args) -> see below;
      |                                                                                          ^~~

p1027.cpp:93:142: error: expected initializer before 'below'
   93 | template<template<class...> class C, class... Args> constexpr auto to(Args&&... args) -> see below;
      |                                                                                              ^~~~~

p1027.cpp:108:36: error: 'unspecified' does not name a type
  108 | namespace views { inline constexpr unspecified single = unspecified; } template<bool Const, class T>
      |                                    ^~~~~~~~~~~
p1027.cpp:109:12: error: expected '=' before '-' token
  109 | using maybe-const = conditional_t<Const, const T, T>; // exposition only
      |            ^
p1027.cpp:109:12: error: expected type-specifier before '-' token
p1027.cpp:112:10: error: 'weakly' was not declared in this scope
  112 | requires weakly-equality-comparable-with<W, Bound> && copyable<W> class iota_view;
      |          ^~~~~~
p1027.cpp:112:17: error: 'equality' was not declared in this scope; did you mean 'equal_to'?
  112 | requires weakly-equality-comparable-with<W, Bound> && copyable<W> class iota_view;
      |                 ^~~~~~~~
      |                 equal_to
p1027.cpp:112:26: error: 'comparable' was not declared in this scope; did you mean 'copyable'?
  112 | requires weakly-equality-comparable-with<W, Bound> && copyable<W> class iota_view;
      |                          ^~~~~~~~~~
      |                          copyable
p1027.cpp:112:37: error: 'with' was not declared in this scope
  112 | requires weakly-equality-comparable-with<W, Bound> && copyable<W> class iota_view;
      |                                     ^~~~
p1027.cpp:112:1: error: expression must be enclosed in parentheses
  112 | requires weakly-equality-comparable-with<W, Bound> && copyable<W> class iota_view;
      | ^~~~~~~~
p1027.cpp:112:10: error: 'weakly' does not name a type
  112 | requires weakly-equality-comparable-with<W, Bound> && copyable<W> class iota_view;
      |          ^~~~~~
p1027.cpp:114:47: error: 'iota_view' was not declared in this scope
  114 |   inline constexpr bool enable_borrowed_range<iota_view<W, Bound>> = true;
      |                                               ^~~~~~~~~
p1027.cpp:114:25: error: parse error in template argument list
  114 |   inline constexpr bool enable_borrowed_range<iota_view<W, Bound>> = true;
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1027.cpp:114:25: error: wrong number of template arguments (2, should be 1)
/usr/local/include/c++/12.1.0/bits/ranges_base.h:50:27: note: provided for 'template<class _Tp> constexpr const bool std::ranges::enable_borrowed_range<_Tp>'
   50 |     inline constexpr bool enable_borrowed_range = false;
      |                           ^~~~~~~~~~~~~~~~~~~~~
p1027.cpp:114:25: error: template-id 'enable_borrowed_range<<expression error>, Bound>' for 'std::ranges::enable_borrowed_range' does not match any template declaration
  114 |   inline constexpr bool enable_borrowed_range<iota_view<W, Bound>> = true;
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:50:27: note: candidate is: 'template<class _Tp> constexpr const bool std::ranges::enable_borrowed_range<_Tp>'
   50 |     inline constexpr bool enable_borrowed_range = false;
      |                           ^~~~~~~~~~~~~~~~~~~~~
p1027.cpp:115:36: error: 'unspecified' does not name a type
  115 | namespace views { inline constexpr unspecified iota = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:118:14: error: 'below' does not name a type
  118 | requires see below class basic_istream_view; template<class Val>
      |              ^~~~~
p1027.cpp:119:24: error: 'basic_istream_view' does not name a type; did you mean 'basic_string_view'?
  119 |   using istream_view = basic_istream_view<Val, char>;
      |                        ^~~~~~~~~~~~~~~~~~
      |                        basic_string_view
p1027.cpp:121:23: error: 'basic_istream_view' does not name a type; did you mean 'basic_string_view'?
  121 | using wistream_view = basic_istream_view<Val, wchar_t>;
      |                       ^~~~~~~~~~~~~~~~~~
      |                       basic_string_view
p1027.cpp:122:54: error: 'unspecified' does not name a type
  122 | namespace views { template<class T> inline constexpr unspecified istream = unspecified; }
      |                                                      ^~~~~~~~~~~
p1027.cpp:129:18: error: 'unspecified' does not name a type
  129 | inline constexpr unspecified all = unspecified ;
      |                  ^~~~~~~~~~~
p1027.cpp:140:14: error: 'below' does not name a type
  140 | requires see below class owning_view;
      |              ^~~~~
p1027.cpp:142:47: error: 'owning_view' was not declared in this scope; did you mean 'string_view'?
  142 |   inline constexpr bool enable_borrowed_range<owning_view<T>> = enable_borrowed_range<T>;
      |                                               ^~~~~~~~~~~
      |                                               string_view
p1027.cpp:142:25: error: parse error in template argument list
  142 |   inline constexpr bool enable_borrowed_range<owning_view<T>> = enable_borrowed_range<T>;
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1027.cpp:142:25: error: template argument 1 is invalid
p1027.cpp:142:25: error: template-id 'enable_borrowed_range<<expression error> >' for 'std::ranges::enable_borrowed_range' does not match any template declaration
/usr/local/include/c++/12.1.0/bits/ranges_base.h:50:27: note: candidate is: 'template<class _Tp> constexpr const bool std::ranges::enable_borrowed_range<_Tp>'
   50 |     inline constexpr bool enable_borrowed_range = false;
      |                           ^~~~~~~~~~~~~~~~~~~~~
p1027.cpp:147:36: error: 'unspecified' does not name a type
  147 | namespace views { inline constexpr unspecified filter = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:151:48: error: 'can' was not declared in this scope; did you mean 'tan'?
  151 | regular_invocable<F&, range_reference_t<V>> && can-reference<invoke_result_t<F&, range_reference_t<V>>>
      |                                                ^~~
      |                                                tan
p1027.cpp:151:52: error: 'reference' was not declared in this scope; did you mean 'is_reference'?
  151 | regular_invocable<F&, range_reference_t<V>> && can-reference<invoke_result_t<F&, range_reference_t<V>>>
      |                                                    ^~~~~~~~~
      |                                                    is_reference
p1027.cpp:151:45: error: expression must be enclosed in parentheses
  151 | regular_invocable<F&, range_reference_t<V>> && can-reference<invoke_result_t<F&, range_reference_t<V>>>
      |                                             ^~
p1027.cpp:151:48: error: 'can' does not name a type
  151 | regular_invocable<F&, range_reference_t<V>> && can-reference<invoke_result_t<F&, range_reference_t<V>>>
      |                                                ^~~
p1027.cpp:153:36: error: 'unspecified' does not name a type
  153 | namespace views { inline constexpr unspecified transform = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:158:36: error: 'unspecified' does not name a type
  158 | namespace views { inline constexpr unspecified take = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:164:36: error: 'unspecified' does not name a type
  164 | namespace views { inline constexpr unspecified take_while = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:170:36: error: 'unspecified' does not name a type
  170 | namespace views { inline constexpr unspecified drop = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:179:36: error: 'unspecified' does not name a type
  179 | namespace views { inline constexpr unspecified drop_while = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:184:36: error: 'unspecified' does not name a type
  184 | namespace views { inline constexpr unspecified join = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:187:19: error: expected '=' before '-' token
  187 | concept compatible-joinable-ranges = see below ; // exposition only
      |                   ^
p1027.cpp:191:4: error: 'compatible' was not declared in this scope; did you mean 'copyable'?
  191 | && compatible-joinable-ranges<range_reference_t<V>, Pattern> class join_with_view;
      |    ^~~~~~~~~~
      |    copyable
p1027.cpp:191:15: error: 'joinable' was not declared in this scope
  191 | && compatible-joinable-ranges<range_reference_t<V>, Pattern> class join_with_view;
      |               ^~~~~~~~
p1027.cpp:191:1: error: expression must be enclosed in parentheses
  191 | && compatible-joinable-ranges<range_reference_t<V>, Pattern> class join_with_view;
      | ^~
p1027.cpp:191:4: error: 'compatible' does not name a type; did you mean 'volatile'?
  191 | && compatible-joinable-ranges<range_reference_t<V>, Pattern> class join_with_view;
      |    ^~~~~~~~~~
      |    volatile
p1027.cpp:192:36: error: 'unspecified' does not name a type
  192 | namespace views { inline constexpr unspecified join_with = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:195:13: error: expected '=' before '-' token
  195 | concept tiny-range = see below ; // exposition only
      |             ^
p1027.cpp:199:22: error: 'tiny' was not declared in this scope
  199 | (forward_range<V> || tiny-range<Pattern>) class lazy_split_view;
      |                      ^~~~
p1027.cpp:206:18: error: 'unspecified' does not name a type
  206 | inline constexpr unspecified inline constexpr unspecified
      |                  ^~~~~~~~~~~
p1027.cpp:208:1: error: 'lazy_split' does not name a type; did you mean 'lazy_split_view'?
  208 | lazy_split = unspecified ; split = unspecified ;
      | ^~~~~~~~~~
      | lazy_split_view
p1027.cpp:208:28: error: 'split' does not name a type
  208 | lazy_split = unspecified ; split = unspecified ;
      |                            ^~~~~
p1027.cpp:210:36: error: 'unspecified' does not name a type
  210 | namespace views { inline constexpr unspecified counted = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:217:36: error: 'unspecified' does not name a type
  217 | namespace views { inline constexpr unspecified common = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:224:36: error: 'unspecified' does not name a type
  224 | namespace views { inline constexpr unspecified reverse = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:227:14: error: 'below' does not name a type
  227 | requires see below class elements_view;
      |              ^~~~~
p1027.cpp:229:47: error: 'elements_view' was not declared in this scope; did you mean 'empty_view'?
  229 |   inline constexpr bool enable_borrowed_range<elements_view<T, N>> = enable_borrowed_range<T>;
      |                                               ^~~~~~~~~~~~~
      |                                               empty_view
p1027.cpp:229:25: error: parse error in template argument list
  229 |   inline constexpr bool enable_borrowed_range<elements_view<T, N>> = enable_borrowed_range<T>;
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1027.cpp:229:25: error: wrong number of template arguments (2, should be 1)
/usr/local/include/c++/12.1.0/bits/ranges_base.h:50:27: note: provided for 'template<class _Tp> constexpr const bool std::ranges::enable_borrowed_range<_Tp>'
   50 |     inline constexpr bool enable_borrowed_range = false;
      |                           ^~~~~~~~~~~~~~~~~~~~~
p1027.cpp:229:25: error: template-id 'enable_borrowed_range<<expression error>, <expression error> >' for 'std::ranges::enable_borrowed_range' does not match any template declaration
  229 |   inline constexpr bool enable_borrowed_range<elements_view<T, N>> = enable_borrowed_range<T>;
      |                         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/local/include/c++/12.1.0/bits/ranges_base.h:50:27: note: candidate is: 'template<class _Tp> constexpr const bool std::ranges::enable_borrowed_range<_Tp>'
   50 |     inline constexpr bool enable_borrowed_range = false;
      |                           ^~~~~~~~~~~~~~~~~~~~~
p1027.cpp:231:21: error: 'elements_view' does not name a type; did you mean 'empty_view'?
  231 |   using keys_view = elements_view<R, 0>;
      |                     ^~~~~~~~~~~~~
      |                     empty_view
p1027.cpp:233:23: error: 'elements_view' does not name a type; did you mean 'empty_view'?
  233 |   using values_view = elements_view<R, 1>;
      |                       ^~~~~~~~~~~~~
      |                       empty_view
p1027.cpp:236:18: error: 'unspecified' does not name a type
  236 | inline constexpr unspecified elements = unspecified ; inline constexpr auto keys = elements<0>;
      |                  ^~~~~~~~~~~
p1027.cpp:236:84: error: 'elements' was not declared in this scope
  236 | inline constexpr unspecified elements = unspecified ; inline constexpr auto keys = elements<0>;
      |                                                                                    ^~~~~~~~
p1027.cpp:236:95: error: expected primary-expression before ';' token
  236 | inline constexpr unspecified elements = unspecified ; inline constexpr auto keys = elements<0>;
      |                                                                                               ^
p1027.cpp:237:32: error: 'elements' was not declared in this scope
  237 | inline constexpr auto values = elements<1>;
      |                                ^~~~~~~~
p1027.cpp:237:43: error: expected primary-expression before ';' token
  237 | inline constexpr auto values = elements<1>;
      |                                           ^
p1027.cpp:246:36: error: 'unspecified' does not name a type
  246 | namespace views { inline constexpr unspecified zip = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:249:132: error: 'can' was not declared in this scope; did you mean 'tan'?
  249 | (Views) > 0) && is_object_v<F> && regular_invocable<F&, range_reference_t<Views>...> && can-reference<invoke_result_t<F&, range_reference_t<Views>...>>
      |                                                                                         ^~~
      |                                                                                         tan
p1027.cpp:249:136: error: 'reference' was not declared in this scope; did you mean 'is_reference'?
  249 | ws) > 0) && is_object_v<F> && regular_invocable<F&, range_reference_t<Views>...> && can-reference<invoke_result_t<F&, range_reference_t<Views>...>>
      |                                                                                         ^~~~~~~~~
      |                                                                                         is_referenc
p1027.cpp:249:129: error: expression must be enclosed in parentheses
  249 | ...(Views) > 0) && is_object_v<F> && regular_invocable<F&, range_reference_t<Views>...> && can-reference<invoke_result_t<F&, range_reference_t<Views>...>>
      |                                                                                         ^~

p1027.cpp:249:132: error: 'can' does not name a type
  249 | (Views) > 0) && is_object_v<F> && regular_invocable<F&, range_reference_t<Views>...> && can-reference<invoke_result_t<F&, range_reference_t<Views>...>>
      |                                                                                         ^~~

p1027.cpp:251:36: error: 'unspecified' does not name a type
  251 | namespace views { inline constexpr unspecified zip_transform = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:260:18: error: 'unspecified' does not name a type
  260 | inline constexpr unspecified adjacent = unspecified ; inline constexpr auto pairwise = adjacent<2>;
      |                  ^~~~~~~~~~~
p1027.cpp:260:88: error: 'adjacent' was not declared in this scope
  260 | inline constexpr unspecified adjacent = unspecified ; inline constexpr auto pairwise = adjacent<2>;
      |                                                                                        ^~~~~~~~
p1027.cpp:260:99: error: expected primary-expression before ';' token
  260 | inline constexpr unspecified adjacent = unspecified ; inline constexpr auto pairwise = adjacent<2>;
      |                                                                                                   ^
p1027.cpp:264:14: error: 'below' does not name a type
  264 | requires see below
      |              ^~~~~
p1027.cpp:268:18: error: 'unspecified' does not name a type
  268 | inline constexpr unspecified adjacent_transform = unspecified ; inline constexpr auto pairwise_transform = adjacent_transform<2>;
      |                  ^~~~~~~~~~~
p1027.cpp:268:108: error: 'adjacent_transform' was not declared in this scope
  268 | specified adjacent_transform = unspecified ; inline constexpr auto pairwise_transform = adjacent_transform<2>;
      |                                                                                         ^~~~~~~~~~~~~~~~~~

p1027.cpp:268:129: error: expected primary-expression before ';' token
  268 | djacent_transform = unspecified ; inline constexpr auto pairwise_transform = adjacent_transform<2>;
      |                                                                                                   ^

p1027.cpp:279:36: error: 'unspecified' does not name a type
  279 | namespace views { inline constexpr unspecified chunk = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:286:36: error: 'unspecified' does not name a type
  286 | namespace views { inline constexpr unspecified slide = unspecified; }
      |                                    ^~~~~~~~~~~
p1027.cpp:291:36: error: 'unspecified' does not name a type
  291 | namespace views { inline constexpr unspecified chunk_by = unspecified; } }
      |                                    ^~~~~~~~~~~
p1027.cpp:307:14: error: expected constructor, destructor, or type conversion before '(' token
  307 | ranges::begin(E) is expression-equivalent to auto(t.begin()).
      |              ^
p1027.cpp:312:13: error: expected ')' before '(' token
  312 |   auto(begin(t)) with overload resolution performed in the above context.
      |       ~     ^
      |             )

検討事項(agenda)

コンパイルエラーを取るか、コンパイルエラーの理由を解説する。

参考資料(reference)

関連する自己参照以外は、こちらの先頭に移転。

C言語(C++)に対する誤解、曲解、無理解、爽快。

#include "N4910.h"

C++N4910資料の改善点

dockerにclang

docker gnu(gcc/g++) and llvm(clang/clang++)

コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)

C++N4910:2022 tag follower 300人超えました。ありがとうございます。

astyle 使ってみた

DoCAP(ドゥーキャップ)って何ですか?

小川メソッド 覚え(書きかけ)

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

文書履歴(document history)

ver. 0.01 初稿  20220811

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?