はじめに(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)
// 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)
$ 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