23.5 Null-terminated sequence utilities [c.strings] C++N4910:2022 (637) p836.cpp

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

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

https://stackoverflow.com

http://ja.cppreference.com/

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

https://cpprefjp.github.io/

コンパイラの実装状況

https://cpprefjp.github.io/implementation-status.html

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

## 作業方針(sequence)
Clang++では-std=c++03, C++2bの2種類
g++では-std=c++03, c++2bの２種類
でコンパイルし、

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

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

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

https://qiita.com/kaizen_nagoya/items/fc957ddddd402004bb91

### C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list
https://qiita.com/kaizen_nagoya/items/3294c014044550896010

### 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++
https://qiita.com/kaizen_nagoya/items/685b5c1a2c17c1bf1318

## 編纂器(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.

# 23.5 Null-terminated sequence utilities [c.strings] C++N4910:2022 (637) p836.cpp

## 算譜(source code)

```c++:p836.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 = "23.5 Null-terminated sequence utilities [c.strings] C++N4910:2022 (637) p836.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;

// 23.5.1 Header <cctype> synopsis [cctype.syn]
namespace std {
int isalnum(int c);
int isalpha(int c);
int isblank(int c);
int iscntrl(int c);
int isdigit(int c);
int isgraph(int c);
int islower(int c);
int isprint(int c);
int ispunct(int c);
int isspace(int c);
int isupper(int c);
int isxdigit(int c);
int tolower(int c);
int toupper(int c);
}
//  The contents and meaning of the header <cctype> are the same as the C standard library header <ctype.h>. See also: ISO C 7.4
//  23.5.2 Header <cwctype> synopsis [cwctype.syn]
namespace std {
using wint_t = see_below;
using wctrans_t = see_below;
using wctype_t = see_below;
int iswalnum(wint_t wc);
int iswalpha(wint_t wc);
int iswblank(wint_t wc);
int iswcntrl(wint_t wc);
int iswdigit(wint_t wc);
int iswgraph(wint_t wc);
int iswlower(wint_t wc);
int iswprint(wint_t wc);
int iswpunct(wint_t wc);
int iswspace(wint_t wc);
int iswupper(wint_t wc);
int iswxdigit(wint_t wc);
int iswctype(wint_t wc, wctype_t desc);
wctype_t wctype(const char* property);
wint_t towlower(wint_t wc);
wint_t towupper(wint_t wc);
wint_t towctrans(wint_t wc, wctrans_t desc);
wctrans_t wctrans(const char* property);
}
#define WEOF see_below
//   The contents and meaning of the header <cwctype> are the same as the C standard library header <wctype.h>.
// See also: ISO C 7.30
//  23.5.3 Header <cstring> synopsis [cstring.syn]
namespace std {
using size_t = see_17.2.4;
void* memcpy(void* s1, const void* s2, size_t n);
void* memmove(void* s1, const void* s2, size_t n);
char* strcpy(char* s1, const char* s2);
char* strncpy(char* s1, const char* s2, size_t n);
char* strcat(char* s1, const char* s2);
char* strncat(char* s1, const char* s2, size_t n);
int memcmp(const void* s1, const void* s2, size_t n);
int strcmp(const char* s1, const char* s2);
int strcoll(const char* s1, const char* s2);
int strncmp(const char* s1, const char* s2, size_t n);
size_t strxfrm(char* s1, const char* s2, size_t n);
const void* memchr(const void* s, int c, size_t n);
void* memchr(void* s, int c, size_t n);
const char* strchr(const char* s, int c);
char* strchr(char* s, int c);
size_t strcspn(const char* s1, const char* s2);
const char* strpbrk(const char* s1, const char* s2);
char* strpbrk(char* s1, const char* s2);
const char* strrchr(const char* s, int c);
char* strrchr(char* s, int c);
size_t strspn(const char* s1, const char* s2);
const char* strstr(const char* s1, const char* s2);
char* strstr(char* s1, const char* s2);
char* strtok(char* s1, const char* s2);
void* memset(void* s, int c, size_t n);
char* strerror(int errnum);
size_t strlen(const char* s);
}
#define NULL see_17.2.3
// see 16.2 // see 16.2 // see 16.2 // see 16.2
// see 16.2 // see 16.2 // see 16.2 // see 16.2
// see 16.2 // see 16.2
//  The contents and meaning of the header <cstring> are the same as the C standard library header <string.h>.
//  The functions strerror and strtok are not required to avoid data races (16.4.6.10).
//  The functions memcpy and memmove are signal-safe (17.13.5). Both functions implicitly create objects (6.7.2) in the destination region of storage immediately prior to copying the sequence of characters to the destination.
// [Note 1: The functions strchr, strpbrk, strrchr, strstr, and memchr, have different signatures in this document, but they have the same behavior as in the C standard library (16.2).  See also: ISO C 7.24
// 23.5.4 Header <cwchar> synopsis [cwchar.syn]
namespace std {
using size_t = see_17.2.4;
using mbstate_t = see_below;
using wint_t = see_below;
struct tm;
int fwprintf(FILE* stream, const wchar_t* format, ...);
int fwscanf(FILE* stream, const wchar_t* format, ...);
int swprintf(wchar_t* s, size_t n, const wchar_t* format, ...);
int swscanf(const wchar_t* s, const wchar_t* format, ...);
int vfwprintf(FILE* stream, const wchar_t* format, va_list arg);
int vfwscanf(FILE* stream, const wchar_t* format, va_list arg);
int vswprintf(wchar_t* s, size_t n, const wchar_t* format, va_list arg);
int vswscanf(const wchar_t* s, const wchar_t* format, va_list arg);
int vwprintf(const wchar_t* format, va_list arg);
int vwscanf(const wchar_t* format, va_list arg);
int wprintf(const wchar_t* format, ...);
int wscanf(const wchar_t* format, ...);
wint_t fgetwc(FILE* stream);
wchar_t* fgetws(wchar_t* s, int n, FILE* stream);
wint_t fputwc(wchar_t c, FILE* stream);
int fputws(const wchar_t* s, FILE* stream);
int fwide(FILE* stream, int mode);
wint_t getwc(FILE* stream);
wint_t getwchar();
wint_t putwc(wchar_t c, FILE* stream);
wint_t putwchar(wchar_t c);
wint_t ungetwc(wint_t c, FILE* stream);
double wcstod(const wchar_t* nptr, wchar_t** endptr);
float wcstof(const wchar_t* nptr, wchar_t** endptr);
long double wcstold(const wchar_t* nptr, wchar_t** endptr);
long int wcstol(const wchar_t* nptr, wchar_t** endptr, int base);
long long int wcstoll(const wchar_t* nptr, wchar_t** endptr, int base);
unsigned long int wcstoul(const wchar_t* nptr, wchar_t** endptr, int base);
unsigned long long int wcstoull(const wchar_t* nptr, wchar_t** endptr, int base);
wchar_t* wcscpy(wchar_t* s1, const wchar_t* s2);
wchar_t* wcsncpy(wchar_t* s1, const wchar_t* s2, size_t n);
wchar_t* wmemcpy(wchar_t* s1, const wchar_t* s2, size_t n);
wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
wchar_t* wcscat(wchar_t* s1, const wchar_t* s2);
wchar_t* wcsncat(wchar_t* s1, const wchar_t* s2, size_t n);
int wcscmp(const wchar_t* s1, const wchar_t* s2);
int wcscoll(const wchar_t* s1, const wchar_t* s2);
int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
size_t wcsxfrm(wchar_t* s1, const wchar_t* s2, size_t n);
int wmemcmp(const wchar_t* s1, const wchar_t* s2, size_t n);
const wchar_t* wcschr(const wchar_t* s, wchar_t c);
// see 16.2 // see 16.2
// see 16.2 // see 16.2
// 23.5.6, multibyte / wide string and character conversion functions
int mbsinit(const mbstate_t* ps);
size_t mbrlen(const char* s, size_t n, mbstate_t* ps);
size_t mbrtowc(wchar_t* pwc, const char* s, size_t n, mbstate_t* ps);
size_t wcrtomb(char* s, wchar_t wc, mbstate_t* ps);
size_t mbsrtowcs(wchar_t* dst, const char** src, size_t len, mbstate_t* ps);
size_t wcsrtombs(char* dst, const wchar_t** src, size_t len, mbstate_t* ps);
}
#define NULL see_17.2.3
#define WCHAR_MAX see_below
#define WCHAR_MIN see_below
#define WEOF see below
//  The contents and meaning of the header <cwchar> are the same as the C standard library header <wchar.h>, except that it does not declare a type wchar_t.
//  [Note 1: The functions wcschr, wcspbrk, wcsrchr, wcsstr, and wmemchr have different signatures in this document, but they have the same behavior as in the C standard library (16.2). —end note]
wchar_t* wcschr(wchar_t* s, wchar_t c);
size_t wcscspn(const wchar_t* s1, const wchar_t* s2);
const wchar_t* wcspbrk(const wchar_t* s1, const wchar_t* s2);
wchar_t* wcspbrk(wchar_t* s1, const wchar_t* s2);
const wchar_t* wcsrchr(const wchar_t* s, wchar_t c);
wchar_t* wcsrchr(wchar_t* s, wchar_t c);
size_t wcsspn(const wchar_t* s1, const wchar_t* s2);
const wchar_t* wcsstr(const wchar_t* s1, const wchar_t* s2);
wchar_t* wcsstr(wchar_t* s1, const wchar_t* s2);
wchar_t* wcstok(wchar_t* s1, const wchar_t* s2, wchar_t** ptr);
const wchar_t* wmemchr(const wchar_t* s, wchar_t c, size_t n); // see 16.2
wchar_t* wmemchr(wchar_t* s, wchar_t c, size_t n); // see 16.2
size_t wcslen(const wchar_t* s);
wchar_t* wmemset(wchar_t* s, wchar_t c, size_t n);
size_t wcsftime(wchar_t* s, size_t maxsize, const wchar_t* format, const tm* timeptr);
wint_t btowc(int c);
int wctob(wint_t c);
// See also: ISO C 7.29 § 23.5.4
// see 16.2 // see 16.2 // see 16.2 // see 16.2
// 23.5.5 Header <cuchar> synopsis [cuchar.syn]
namespace std {
using mbstate_t = see_below;
using size_t = see_17.2.4;
size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
size_t c8rtomb(char* s, char8_t c8, mbstate_t* ps);
size_t mbrtoc16(char16_t* pc16, const char* s, size_t n, mbstate_t* ps);
size_t c16rtomb(char* s, char16_t c16, mbstate_t* ps);
size_t mbrtoc32(char32_t* pc32, const char* s, size_t n, mbstate_t* ps);
size_t c32rtomb(char* s, char32_t c32, mbstate_t* ps);
}
//  The contents and meaning of the header <cuchar> are the same as the C standard library header <uchar.h>, except that it declares the additional mbrtoc8 and c8rtomb functions and does not declare types char16_t nor char32_t.
// See also: ISO C 7.28
// 23.5.6 Multibyte / wide string and character conversion functions [c.mb.wcs]
//  [Note 1: The headers <cstdlib> (17.2.2), <cuchar> (23.5.5), and <cwchar> (23.5.4) declare the functions described in this subclause. —end note]
int mbsinit(const mbstate_t* ps);
int mblen(const char* s, size_t n);
size_t mbstowcs(wchar_t* pwcs, const char* s, size_t n);
size_t wcstombs(char* s, const wchar_t* pwcs, size_t n);
// Effects: These functions have the semantics specified in the C standard library. See also: ISO C 7.22.7.1, 7.22.8, 7.29.6.2.1
int mbtowc(wchar_t* pwc, const char* s, size_t n);
int wctomb(char* s, wchar_t wchar);
// Effects: These functions have the semantics specified in the C standard library.
// Remarks: Calls to these functions may introduce a data race (16.4.6.10) with other calls to the same function.
// ee also: ISO C 7.22.7
size_t mbrlen(const char* s, size_t n, mbstate_t* ps);
size_t mbrtowc(wchar_t* pwc, const char* s, size_t n, mbstate_t* ps);
size_t wcrtomb(char* s, wchar_t wc, mbstate_t* ps);
size_t mbsrtowcs(wchar_t* dst, const char** src, size_t len, mbstate_t* ps);
size_t wcsrtombs(char* dst, const wchar_t** src, size_t len, mbstate_t* ps);
// Effects: These functions have the semantics specified in the C standard library.
// Remarks: Calling these functions with an mbstate_t* argument that is a null pointer value may introduce a data race (16.4.6.10) with other calls to the same function with an mbstate_t* argument that is a null pointer value.
// See also: ISO C 7.29.6.3
size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
// Effects: If s is a null pointer, equivalent to mbrtoc8(nullptr, "", 1, ps). Otherwise, the function inspects at most n bytes beginning with the byte pointed to by s to determine the number of bytes needed to complete the next multibyte character (including any shift sequences). If the function determines that the next multibyte character is complete and valid, it determines the values of the corresponding UTF-8 code units and then, if pc8 is not a null pointer, stores the value of the first (or only) such code unit in the object pointed to by pc8. Subsequent calls will store successive UTF-8 code units without consuming any additional input until all the code units have been stored. If the corresponding Unicode character is u+0000 null, the resulting state described is the initial conversion state.
// Returns: The first of the following that applies (given the current conversion state):
// — 0, if the next n or fewer bytes complete the multibyte character that corresponds to the u+0000 null Unicode character (which is the value stored).
// — between 1 and n (inclusive), if the next n or fewer bytes complete a valid multibyte character (whose first (or only) code unit is stored); the value returned is the number of bytes that complete the multibyte character.
//— (size_t)(-3), if the next code unit resulting from a previous call has been stored (no bytes from the input have been consumed by this call).
// — (size_t)(-2), if the next n bytes contribute to an incomplete (but potentially valid) multibyte character, and all n bytes have been processed (no value is stored).
// — (size_t)(-1), if an encoding error occurs, in which case the next n or fewer bytes do not contribute to a complete and valid multibyte character (no value is stored); the value of the macro EILSEQ is stored in errno, and the conversion state is unspecified.
size_t c8rtomb(char* s, char8_t c8, mbstate_t* ps);
// Effects: If s is a null pointer, equivalent to c8rtomb(buf, u8’\0’, ps) where buf is an internal buffer. Otherwise, if c8 completes a sequence of valid UTF-8 code units, determines the number of bytes needed to represent the multibyte character (including any shift sequences), and stores the multibyte character representation in the array whose first element is pointed to by s. At most MB_CUR_MAX bytes are stored. If the multibyte character is a null character, a null byte is stored, preceded by any shift sequence needed to restore the initial shift state; the resulting state described is the initial conversion state.
// Returns: The number of bytes stored in the array object (including any shift sequences). If c8 does not contribute to a sequence of char8_t corresponding to a valid multibyte character, the value of the macro EILSEQ is stored in errno, (size_t) (-1) is returned, and the conversion state is unspecified.
// Remarks: Calls to c8rtomb with a null pointer argument for s may introduce a data race (16.4.6.10) with other calls to c8rtomb with a null pointer argument for s.
int main() {
    cout  <<  n4910 << endl;
    return EXIT_SUCCESS;
}
```

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

```ubuntu:bash
$ clang++ p836.cpp -std=03 -o p836l -I. -Wall
In file included from p836.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 \
 ^
p836.cpp:16:9: error: declaration conflicts with target of using declaration already in scope
    int isalnum(int c);
        ^
/usr/include/ctype.h:108:12: note: target of using declaration
__exctype (isalnum);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:64:11: note: using declaration
  using ::isalnum;
          ^
p836.cpp:17:9: error: declaration conflicts with target of using declaration already in scope
    int isalpha(int c);
        ^
/usr/include/ctype.h:109:12: note: target of using declaration
__exctype (isalpha);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:65:11: note: using declaration
  using ::isalpha;
          ^
p836.cpp:19:9: error: declaration conflicts with target of using declaration already in scope
    int iscntrl(int c);
        ^
/usr/include/ctype.h:110:12: note: target of using declaration
__exctype (iscntrl);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:66:11: note: using declaration
  using ::iscntrl;
          ^
p836.cpp:20:9: error: declaration conflicts with target of using declaration already in scope
    int isdigit(int c);
        ^
/usr/include/ctype.h:111:12: note: target of using declaration
__exctype (isdigit);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:67:11: note: using declaration
  using ::isdigit;
          ^
p836.cpp:21:9: error: declaration conflicts with target of using declaration already in scope
    int isgraph(int c);
        ^
/usr/include/ctype.h:113:12: note: target of using declaration
__exctype (isgraph);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:68:11: note: using declaration
  using ::isgraph;
          ^
p836.cpp:22:9: error: declaration conflicts with target of using declaration already in scope
    int islower(int c);
        ^
/usr/include/ctype.h:112:12: note: target of using declaration
__exctype (islower);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:69:11: note: using declaration
  using ::islower;
          ^
p836.cpp:23:9: error: declaration conflicts with target of using declaration already in scope
    int isprint(int c);
        ^
/usr/include/ctype.h:114:12: note: target of using declaration
__exctype (isprint);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:70:11: note: using declaration
  using ::isprint;
          ^
p836.cpp:24:9: error: declaration conflicts with target of using declaration already in scope
    int ispunct(int c);
        ^
/usr/include/ctype.h:115:12: note: target of using declaration
__exctype (ispunct);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:71:11: note: using declaration
  using ::ispunct;
          ^
p836.cpp:25:9: error: declaration conflicts with target of using declaration already in scope
    int isspace(int c);
        ^
/usr/include/ctype.h:116:12: note: target of using declaration
__exctype (isspace);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:72:11: note: using declaration
  using ::isspace;
          ^
p836.cpp:26:9: error: declaration conflicts with target of using declaration already in scope
    int isupper(int c);
        ^
/usr/include/ctype.h:117:12: note: target of using declaration
__exctype (isupper);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:73:11: note: using declaration
  using ::isupper;
          ^
p836.cpp:27:9: error: declaration conflicts with target of using declaration already in scope
    int isxdigit(int c);
        ^
/usr/include/ctype.h:118:12: note: target of using declaration
__exctype (isxdigit);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:74:11: note: using declaration
  using ::isxdigit;
          ^
p836.cpp:28:9: error: declaration conflicts with target of using declaration already in scope
    int tolower(int c);
        ^
/usr/include/ctype.h:122:12: note: target of using declaration
extern int tolower (int __c) __THROW;
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:75:11: note: using declaration
  using ::tolower;
          ^
p836.cpp:29:9: error: declaration conflicts with target of using declaration already in scope
    int toupper(int c);
        ^
/usr/include/ctype.h:125:12: note: target of using declaration
extern int toupper (int __c) __THROW;
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:76:11: note: using declaration
  using ::toupper;
          ^
p836.cpp:34:16: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using wint_t = see_below; 
               ^
p836.cpp:34:16: error: unknown type name 'see_below'
p836.cpp:35:19: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using wctrans_t = see_below; 
                  ^
p836.cpp:35:19: error: unknown type name 'see_below'
p836.cpp:36:18: warning: alias declarations are a C++11 extension [-Wc++11-extensions]
using wctype_t = see_below;
                 ^
p836.cpp:36:18: error: unknown type name 'see_below'
p836.cpp:37:9: error: declaration conflicts with target of using declaration already in scope
    int iswalnum(wint_t wc);
        ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:95:12: note: target of using declaration
extern int iswalnum (wint_t __wc) __THROW;
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cwctype:86:11: note: using declaration
  using ::iswalnum;
          ^
p836.cpp:38:9: error: declaration conflicts with target of using declaration already in scope
    int iswalpha(wint_t wc);
        ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:101:12: note: target of using declaration
extern int iswalpha (wint_t __wc) __THROW;
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cwctype:87:11: note: using declaration
  using ::iswalpha;
          ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
3 warnings and 20 errors generated.
$ clang++ p836.cpp -std=2b -o p836l -I. -Wall
p836.cpp:16:9: error: declaration conflicts with target of using declaration already in scope
    int isalnum(int c);
        ^
/usr/include/ctype.h:108:12: note: target of using declaration
__exctype (isalnum);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:64:11: note: using declaration
  using ::isalnum;
          ^
p836.cpp:17:9: error: declaration conflicts with target of using declaration already in scope
    int isalpha(int c);
        ^
/usr/include/ctype.h:109:12: note: target of using declaration
__exctype (isalpha);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:65:11: note: using declaration
  using ::isalpha;
          ^
p836.cpp:18:9: error: declaration conflicts with target of using declaration already in scope
    int isblank(int c);
        ^
/usr/include/ctype.h:130:12: note: target of using declaration
__exctype (isblank);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:87:11: note: using declaration
  using ::isblank;
          ^
p836.cpp:19:9: error: declaration conflicts with target of using declaration already in scope
    int iscntrl(int c);
        ^
/usr/include/ctype.h:110:12: note: target of using declaration
__exctype (iscntrl);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:66:11: note: using declaration
  using ::iscntrl;
          ^
p836.cpp:20:9: error: declaration conflicts with target of using declaration already in scope
    int isdigit(int c);
        ^
/usr/include/ctype.h:111:12: note: target of using declaration
__exctype (isdigit);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:67:11: note: using declaration
  using ::isdigit;
          ^
p836.cpp:21:9: error: declaration conflicts with target of using declaration already in scope
    int isgraph(int c);
        ^
/usr/include/ctype.h:113:12: note: target of using declaration
__exctype (isgraph);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:68:11: note: using declaration
  using ::isgraph;
          ^
p836.cpp:22:9: error: declaration conflicts with target of using declaration already in scope
    int islower(int c);
        ^
/usr/include/ctype.h:112:12: note: target of using declaration
__exctype (islower);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:69:11: note: using declaration
  using ::islower;
          ^
p836.cpp:23:9: error: declaration conflicts with target of using declaration already in scope
    int isprint(int c);
        ^
/usr/include/ctype.h:114:12: note: target of using declaration
__exctype (isprint);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:70:11: note: using declaration
  using ::isprint;
          ^
p836.cpp:24:9: error: declaration conflicts with target of using declaration already in scope
    int ispunct(int c);
        ^
/usr/include/ctype.h:115:12: note: target of using declaration
__exctype (ispunct);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:71:11: note: using declaration
  using ::ispunct;
          ^
p836.cpp:25:9: error: declaration conflicts with target of using declaration already in scope
    int isspace(int c);
        ^
/usr/include/ctype.h:116:12: note: target of using declaration
__exctype (isspace);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:72:11: note: using declaration
  using ::isspace;
          ^
p836.cpp:26:9: error: declaration conflicts with target of using declaration already in scope
    int isupper(int c);
        ^
/usr/include/ctype.h:117:12: note: target of using declaration
__exctype (isupper);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:73:11: note: using declaration
  using ::isupper;
          ^
p836.cpp:27:9: error: declaration conflicts with target of using declaration already in scope
    int isxdigit(int c);
        ^
/usr/include/ctype.h:118:12: note: target of using declaration
__exctype (isxdigit);
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:74:11: note: using declaration
  using ::isxdigit;
          ^
p836.cpp:28:9: error: declaration conflicts with target of using declaration already in scope
    int tolower(int c);
        ^
/usr/include/ctype.h:122:12: note: target of using declaration
extern int tolower (int __c) __THROW;
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:75:11: note: using declaration
  using ::tolower;
          ^
p836.cpp:29:9: error: declaration conflicts with target of using declaration already in scope
    int toupper(int c);
        ^
/usr/include/ctype.h:125:12: note: target of using declaration
extern int toupper (int __c) __THROW;
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cctype:76:11: note: using declaration
  using ::toupper;
          ^
p836.cpp:34:16: error: unknown type name 'see_below'
using wint_t = see_below; 
               ^
p836.cpp:35:19: error: unknown type name 'see_below'
using wctrans_t = see_below; 
                  ^
p836.cpp:36:18: error: unknown type name 'see_below'
using wctype_t = see_below;
                 ^
p836.cpp:37:9: error: declaration conflicts with target of using declaration already in scope
    int iswalnum(wint_t wc);
        ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:95:12: note: target of using declaration
extern int iswalnum (wint_t __wc) __THROW;
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cwctype:86:11: note: using declaration
  using ::iswalnum;
          ^
p836.cpp:38:9: error: declaration conflicts with target of using declaration already in scope
    int iswalpha(wint_t wc);
        ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:101:12: note: target of using declaration
extern int iswalpha (wint_t __wc) __THROW;
           ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/cwctype:87:11: note: using declaration
  using ::iswalpha;
          ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

$ g++ p836.cpp -std=03 -o p836g -I. -Wall
In file included from /usr/local/include/c++/12.1.0/atomic:38,
                 from N4910.h:11,
                 from p836.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 \
      |  ^~~~~
p836.cpp:56: warning: "WEOF" redefined
   56 | #define WEOF see_below
      | 
In file included from /usr/local/include/c++/12.1.0/cwchar:44,
                 from /usr/local/include/c++/12.1.0/bits/postypes.h:40,
                 from /usr/local/include/c++/12.1.0/iosfwd:40,
                 from /usr/local/include/c++/12.1.0/ios:38,
                 from /usr/local/include/c++/12.1.0/ostream:38,
                 from /usr/local/include/c++/12.1.0/iostream:39,
                 from N4910.h:2:
/usr/include/wchar.h:64: note: this is the location of the previous definition
   64 | # define WEOF (0xffffffffu)
      | 
p836.cpp:61:22: error: too many decimal points in number
   61 | using size_t = see_17.2.4;
      |                      ^~~~
p836.cpp:90: warning: "NULL" redefined
   90 | #define NULL see_17.2.3
      | 
In file included from /usr/include/strings.h:23,
                 from /usr/include/string.h:432,
                 from /usr/local/include/c++/12.1.0/cstring:42,
                 from N4910.h:5:
/usr/local/lib/gcc/x86_64-linux-gnu/12.1.0/include/stddef.h:401: note: this is the location of the previous definition
  401 | #define NULL __null
      | 
p836.cpp:100:22: error: too many decimal points in number
  100 | using size_t = see_17.2.4;
      |                      ^~~~
p836.cpp:155: warning: "WCHAR_MAX" redefined
  155 | #define WCHAR_MAX see_below
      | 
/usr/include/wchar.h:60: note: this is the location of the previous definition
   60 | # define WCHAR_MAX __WCHAR_MAX
      | 
p836.cpp:156: warning: "WCHAR_MIN" redefined
  156 | #define WCHAR_MIN see_below
      | 
/usr/include/wchar.h:59: note: this is the location of the previous definition
   59 | # define WCHAR_MIN __WCHAR_MIN
      | 
p836.cpp:157: warning: "WEOF" redefined
  157 | #define WEOF see below
      | 
p836.cpp:56: note: this is the location of the previous definition
   56 | #define WEOF see_below
      | 
p836.cpp:180:51: error: too many decimal points in number
  180 | using mbstate_t = see_below; using size_t = see_17.2.4;
      |                                                   ^~~~
p836.cpp:16:22: error: 'int std::isalnum(int)' conflicts with a previous declaration
   16 |     int isalnum(int c);
      |                      ^
In file included from /usr/local/include/c++/12.1.0/cctype:42,
                 from /usr/local/include/c++/12.1.0/bits/localefwd.h:42,
                 from /usr/local/include/c++/12.1.0/ios:41:
/usr/include/ctype.h:108:1: note: previous declaration 'int isalnum(int)'
  108 | __exctype (isalnum);
      | ^~~~~~~~~
p836.cpp:17:22: error: 'int std::isalpha(int)' conflicts with a previous declaration
   17 |     int isalpha(int c);
      |                      ^
/usr/include/ctype.h:109:1: note: previous declaration 'int isalpha(int)'
  109 | __exctype (isalpha);
      | ^~~~~~~~~
p836.cpp:19:22: error: 'int std::iscntrl(int)' conflicts with a previous declaration
   19 |     int iscntrl(int c);
      |                      ^
/usr/include/ctype.h:110:1: note: previous declaration 'int iscntrl(int)'
  110 | __exctype (iscntrl);
      | ^~~~~~~~~
p836.cpp:20:22: error: 'int std::isdigit(int)' conflicts with a previous declaration
   20 |     int isdigit(int c);
      |                      ^
/usr/include/ctype.h:111:1: note: previous declaration 'int isdigit(int)'
  111 | __exctype (isdigit);
      | ^~~~~~~~~
p836.cpp:21:22: error: 'int std::isgraph(int)' conflicts with a previous declaration
   21 |     int isgraph(int c);
      |                      ^
/usr/include/ctype.h:113:1: note: previous declaration 'int isgraph(int)'
  113 | __exctype (isgraph);
      | ^~~~~~~~~
p836.cpp:22:22: error: 'int std::islower(int)' conflicts with a previous declaration
   22 |     int islower(int c);
      |                      ^
/usr/include/ctype.h:112:1: note: previous declaration 'int islower(int)'
  112 | __exctype (islower);
      | ^~~~~~~~~
p836.cpp:23:22: error: 'int std::isprint(int)' conflicts with a previous declaration
   23 |     int isprint(int c);
      |                      ^
/usr/include/ctype.h:114:1: note: previous declaration 'int isprint(int)'
  114 | __exctype (isprint);
      | ^~~~~~~~~
p836.cpp:24:22: error: 'int std::ispunct(int)' conflicts with a previous declaration
   24 |     int ispunct(int c);
      |                      ^
/usr/include/ctype.h:115:1: note: previous declaration 'int ispunct(int)'
  115 | __exctype (ispunct);
      | ^~~~~~~~~
p836.cpp:25:22: error: 'int std::isspace(int)' conflicts with a previous declaration
   25 |     int isspace(int c);
      |                      ^
/usr/include/ctype.h:116:1: note: previous declaration 'int isspace(int)'
  116 | __exctype (isspace);
      | ^~~~~~~~~
p836.cpp:26:22: error: 'int std::isupper(int)' conflicts with a previous declaration
   26 |     int isupper(int c);
      |                      ^
/usr/include/ctype.h:117:1: note: previous declaration 'int isupper(int)'
  117 | __exctype (isupper);
      | ^~~~~~~~~
p836.cpp:27:23: error: 'int std::isxdigit(int)' conflicts with a previous declaration
   27 |     int isxdigit(int c);
      |                       ^
/usr/include/ctype.h:118:1: note: previous declaration 'int isxdigit(int)'
  118 | __exctype (isxdigit);
      | ^~~~~~~~~
p836.cpp:28:22: error: 'int std::tolower(int)' conflicts with a previous declaration
   28 |     int tolower(int c);
      |                      ^
/usr/include/ctype.h:122:12: note: previous declaration 'int tolower(int)'
  122 | extern int tolower (int __c) __THROW;
      |            ^~~~~~~
p836.cpp:29:22: error: 'int std::toupper(int)' conflicts with a previous declaration
   29 |     int toupper(int c);
      |                      ^
/usr/include/ctype.h:125:12: note: previous declaration 'int toupper(int)'
  125 | extern int toupper (int __c) __THROW;
      |            ^~~~~~~
p836.cpp:34:7: error: expected nested-name-specifier before 'wint_t'
   34 | using wint_t = see_below;
      |       ^~~~~~
p836.cpp:35:7: error: expected nested-name-specifier before 'wctrans_t'
   35 | using wctrans_t = see_below;
      |       ^~~~~~~~~
p836.cpp:36:7: error: expected nested-name-specifier before 'wctype_t'
   36 | using wctype_t = see_below;
      |       ^~~~~~~~
p836.cpp:37:27: error: 'int std::iswalnum(wint_t)' conflicts with a previous declaration
   37 |     int iswalnum(wint_t wc);
      |                           ^
In file included from /usr/include/wctype.h:38,
                 from /usr/local/include/c++/12.1.0/cwctype:50,
                 from /usr/local/include/c++/12.1.0/bits/locale_facets.h:39,
                 from /usr/local/include/c++/12.1.0/bits/basic_ios.h:37,
                 from /usr/local/include/c++/12.1.0/ios:44:
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:95:12: note: previous declaration 'int iswalnum(wint_t)'
   95 | extern int iswalnum (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:38:27: error: 'int std::iswalpha(wint_t)' conflicts with a previous declaration
   38 |     int iswalpha(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:101:12: note: previous declaration 'int iswalpha(wint_t)'
  101 | extern int iswalpha (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:39:27: error: 'int std::iswblank(wint_t)' conflicts with a previous declaration
   39 |     int iswblank(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:146:12: note: previous declaration 'int iswblank(wint_t)'
  146 | extern int iswblank (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:40:27: error: 'int std::iswcntrl(wint_t)' conflicts with a previous declaration
   40 |     int iswcntrl(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:104:12: note: previous declaration 'int iswcntrl(wint_t)'
  104 | extern int iswcntrl (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:41:27: error: 'int std::iswdigit(wint_t)' conflicts with a previous declaration
   41 |     int iswdigit(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:108:12: note: previous declaration 'int iswdigit(wint_t)'
  108 | extern int iswdigit (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:42:27: error: 'int std::iswgraph(wint_t)' conflicts with a previous declaration
   42 |     int iswgraph(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:112:12: note: previous declaration 'int iswgraph(wint_t)'
  112 | extern int iswgraph (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:43:27: error: 'int std::iswlower(wint_t)' conflicts with a previous declaration
   43 |     int iswlower(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:117:12: note: previous declaration 'int iswlower(wint_t)'
  117 | extern int iswlower (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:44:27: error: 'int std::iswprint(wint_t)' conflicts with a previous declaration
   44 |     int iswprint(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:120:12: note: previous declaration 'int iswprint(wint_t)'
  120 | extern int iswprint (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:45:27: error: 'int std::iswpunct(wint_t)' conflicts with a previous declaration
   45 |     int iswpunct(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:125:12: note: previous declaration 'int iswpunct(wint_t)'
  125 | extern int iswpunct (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:46:27: error: 'int std::iswspace(wint_t)' conflicts with a previous declaration
   46 |     int iswspace(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:130:12: note: previous declaration 'int iswspace(wint_t)'
  130 | extern int iswspace (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:47:27: error: 'int std::iswupper(wint_t)' conflicts with a previous declaration
   47 |     int iswupper(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:135:12: note: previous declaration 'int iswupper(wint_t)'
  135 | extern int iswupper (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:48:28: error: 'int std::iswxdigit(wint_t)' conflicts with a previous declaration
   48 |     int iswxdigit(wint_t wc);
      |                            ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:140:12: note: previous declaration 'int iswxdigit(wint_t)'
  140 | extern int iswxdigit (wint_t __wc) __THROW;
      |            ^~~~~~~~~
p836.cpp:49:42: error: 'int std::iswctype(wint_t, wctype_t)' conflicts with a previous declaration
   49 |     int iswctype(wint_t wc, wctype_t desc);
      |                                          ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:159:12: note: previous declaration 'int iswctype(wint_t, wctype_t)'
  159 | extern int iswctype (wint_t __wc, wctype_t __desc) __THROW;
      |            ^~~~~~~~
p836.cpp:50:41: error: 'wctype_t std::wctype(const char*)' conflicts with a previous declaration
   50 |     wctype_t wctype(const char* property);
      |                                         ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:155:17: note: previous declaration 'wctype_t wctype(const char*)'
  155 | extern wctype_t wctype (const char *__property) __THROW;
      |                 ^~~~~~
p836.cpp:51:30: error: 'wint_t std::towlower(wint_t)' conflicts with a previous declaration
   51 |     wint_t towlower(wint_t wc);
      |                              ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:166:15: note: previous declaration 'wint_t towlower(wint_t)'
  166 | extern wint_t towlower (wint_t __wc) __THROW;
      |               ^~~~~~~~
p836.cpp:52:30: error: 'wint_t std::towupper(wint_t)' conflicts with a previous declaration
   52 |     wint_t towupper(wint_t wc);
      |                              ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:169:15: note: previous declaration 'wint_t towupper(wint_t)'
  169 | extern wint_t towupper (wint_t __wc) __THROW;
      |               ^~~~~~~~
p836.cpp:53:47: error: 'wint_t std::towctrans(wint_t, wctrans_t)' conflicts with a previous declaration
   53 |     wint_t towctrans(wint_t wc, wctrans_t desc);
      |                                               ^
/usr/include/wctype.h:55:15: note: previous declaration 'wint_t towctrans(wint_t, wctrans_t)'
   55 | extern wint_t towctrans (wint_t __wc, wctrans_t __desc) __THROW;
      |               ^~~~~~~~~
p836.cpp:54:43: error: 'const __int32_t* std::wctrans(const char*)' conflicts with a previous declaration
   54 |     wctrans_t wctrans(const char* property);
      |                                           ^
/usr/include/wctype.h:52:18: note: previous declaration 'const __int32_t* wctrans(const char*)'
   52 | extern wctrans_t wctrans (const char *__property) __THROW;
      |                  ^~~~~~~
p836.cpp:61:7: error: expected nested-name-specifier before 'size_t'
   61 | using size_t = see_17.2.4;
      |       ^~~~~~
p836.cpp:62:50: error: 'void* std::memcpy(void*, const void*, size_t)' conflicts with a previous declaration
   62 |   void* memcpy(void* s1, const void* s2, size_t n);
      |                                                  ^
/usr/include/string.h:43:14: note: previous declaration 'void* memcpy(void*, const void*, size_t)'
   43 | extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
      |              ^~~~~~
p836.cpp:63:51: error: 'void* std::memmove(void*, const void*, size_t)' conflicts with a previous declaration
   63 |   void* memmove(void* s1, const void* s2, size_t n);
      |                                                   ^
/usr/include/string.h:47:14: note: previous declaration 'void* memmove(void*, const void*, size_t)'
   47 | extern void *memmove (void *__dest, const void *__src, size_t __n)
      |              ^~~~~~~
p836.cpp:64:40: error: 'char* std::strcpy(char*, const char*)' conflicts with a previous declaration
   64 |   char* strcpy(char* s1, const char* s2);
      |                                        ^
/usr/include/string.h:122:14: note: previous declaration 'char* strcpy(char*, const char*)'
  122 | extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
      |              ^~~~~~
p836.cpp:65:51: error: 'char* std::strncpy(char*, const char*, size_t)' conflicts with a previous declaration
   65 |   char* strncpy(char* s1, const char* s2, size_t n);
      |                                                   ^
/usr/include/string.h:125:14: note: previous declaration 'char* strncpy(char*, const char*, size_t)'
  125 | extern char *strncpy (char *__restrict __dest,
      |              ^~~~~~~
p836.cpp:66:40: error: 'char* std::strcat(char*, const char*)' conflicts with a previous declaration
   66 |   char* strcat(char* s1, const char* s2);
      |                                        ^
/usr/include/string.h:130:14: note: previous declaration 'char* strcat(char*, const char*)'
  130 | extern char *strcat (char *__restrict __dest, const char *__restrict __src)
      |              ^~~~~~
p836.cpp:67:51: error: 'char* std::strncat(char*, const char*, size_t)' conflicts with a previous declaration
   67 |   char* strncat(char* s1, const char* s2, size_t n);
      |                                                   ^
/usr/include/string.h:133:14: note: previous declaration 'char* strncat(char*, const char*, size_t)'
  133 | extern char *strncat (char *__restrict __dest, const char *__restrict __src,
      |              ^~~~~~~
p836.cpp:68:54: error: 'int std::memcmp(const void*, const void*, size_t)' conflicts with a previous declaration
   68 |   int memcmp(const void* s1, const void* s2, size_t n);
      |                                                      ^
/usr/include/string.h:64:12: note: previous declaration 'int memcmp(const void*, const void*, size_t)'
   64 | extern int memcmp (const void *__s1, const void *__s2, size_t __n)
      |            ^~~~~~
p836.cpp:69:44: error: 'int std::strcmp(const char*, const char*)' conflicts with a previous declaration
   69 |   int strcmp(const char* s1, const char* s2);
      |                                            ^
/usr/include/string.h:137:12: note: previous declaration 'int strcmp(const char*, const char*)'
  137 | extern int strcmp (const char *__s1, const char *__s2)
      |            ^~~~~~
p836.cpp:70:45: error: 'int std::strcoll(const char*, const char*)' conflicts with a previous declaration
   70 |   int strcoll(const char* s1, const char* s2);
      |                                             ^
/usr/include/string.h:144:12: note: previous declaration 'int strcoll(const char*, const char*)'
  144 | extern int strcoll (const char *__s1, const char *__s2)
      |            ^~~~~~~
p836.cpp:71:55: error: 'int std::strncmp(const char*, const char*, size_t)' conflicts with a previous declaration
   71 |   int strncmp(const char* s1, const char* s2, size_t n);
      |                                                       ^
/usr/include/string.h:140:12: note: previous declaration 'int strncmp(const char*, const char*, size_t)'
  140 | extern int strncmp (const char *__s1, const char *__s2, size_t __n)
      |            ^~~~~~~
p836.cpp:72:52: error: 'std::size_t std::strxfrm(char*, const char*, size_t)' conflicts with a previous declaration
   72 |   size_t strxfrm(char* s1, const char* s2, size_t n);
      |                                                    ^
/usr/include/string.h:147:15: note: previous declaration 'size_t strxfrm(char*, const char*, size_t)'
  147 | extern size_t strxfrm (char *__restrict __dest,
      |               ^~~~~~~
p836.cpp:73:52: error: 'const void* std::memchr(const void*, int, size_t)' conflicts with a previous declaration
   73 |   const void* memchr(const void* s, int c, size_t n);
      |                                                    ^
/usr/include/string.h:73:20: note: previous declaration 'const void* memchr(const void*, int, size_t)'
   73 | extern const void *memchr (const void *__s, int __c, size_t __n)
      |                    ^~~~~~
p836.cpp:74:40: error: 'void* std::memchr(void*, int, size_t)' conflicts with a previous declaration
   74 |   void* memchr(void* s, int c, size_t n);
      |                                        ^
/usr/include/string.h:71:14: note: previous declaration 'void* memchr(void*, int, size_t)'
   71 | extern void *memchr (void *__s, int __c, size_t __n)
      |              ^~~~~~
p836.cpp:75:42: error: 'const char* std::strchr(const char*, int)' conflicts with a previous declaration
   75 |   const char* strchr(const char* s, int c);
      |                                          ^
/usr/include/string.h:208:20: note: previous declaration 'const char* strchr(const char*, int)'
  208 | extern const char *strchr (const char *__s, int __c)
      |                    ^~~~~~
p836.cpp:76:30: error: 'char* std::strchr(char*, int)' conflicts with a previous declaration
   76 |   char* strchr(char* s, int c);
      |                              ^
/usr/include/string.h:206:14: note: previous declaration 'char* strchr(char*, int)'
  206 | extern char *strchr (char *__s, int __c)
      |              ^~~~~~
p836.cpp:77:48: error: 'std::size_t std::strcspn(const char*, const char*)' conflicts with a previous declaration
   77 |   size_t strcspn(const char* s1, const char* s2);
      |                                                ^
/usr/include/string.h:273:15: note: previous declaration 'size_t strcspn(const char*, const char*)'
  273 | extern size_t strcspn (const char *__s, const char *__reject)
      |               ^~~~~~~
p836.cpp:78:53: error: 'const char* std::strpbrk(const char*, const char*)' conflicts with a previous declaration
   78 |   const char* strpbrk(const char* s1, const char* s2);
      |                                                     ^
/usr/include/string.h:285:20: note: previous declaration 'const char* strpbrk(const char*, const char*)'
  285 | extern const char *strpbrk (const char *__s, const char *__accept)
      |                    ^~~~~~~
p836.cpp:79:41: error: 'char* std::strpbrk(char*, const char*)' conflicts with a previous declaration
   79 |   char* strpbrk(char* s1, const char* s2);
      |                                         ^
/usr/include/string.h:283:14: note: previous declaration 'char* strpbrk(char*, const char*)'
  283 | extern char *strpbrk (char *__s, const char *__accept)
      |              ^~~~~~~
p836.cpp:80:43: error: 'const char* std::strrchr(const char*, int)' conflicts with a previous declaration
   80 |   const char* strrchr(const char* s, int c);
      |                                           ^
/usr/include/string.h:235:20: note: previous declaration 'const char* strrchr(const char*, int)'
  235 | extern const char *strrchr (const char *__s, int __c)
      |                    ^~~~~~~
p836.cpp:81:31: error: 'char* std::strrchr(char*, int)' conflicts with a previous declaration
   81 |   char* strrchr(char* s, int c);
      |                               ^
/usr/include/string.h:233:14: note: previous declaration 'char* strrchr(char*, int)'
  233 | extern char *strrchr (char *__s, int __c)
      |              ^~~~~~~
p836.cpp:82:47: error: 'std::size_t std::strspn(const char*, const char*)' conflicts with a previous declaration
   82 |   size_t strspn(const char* s1, const char* s2);
      |                                               ^
/usr/include/string.h:277:15: note: previous declaration 'size_t strspn(const char*, const char*)'
  277 | extern size_t strspn (const char *__s, const char *__accept)
      |               ^~~~~~
p836.cpp:83:52: error: 'const char* std::strstr(const char*, const char*)' conflicts with a previous declaration
   83 |   const char* strstr(const char* s1, const char* s2);
      |                                                    ^
/usr/include/string.h:312:20: note: previous declaration 'const char* strstr(const char*, const char*)'
  312 | extern const char *strstr (const char *__haystack, const char *__needle)
      |                    ^~~~~~
p836.cpp:84:40: error: 'char* std::strstr(char*, const char*)' conflicts with a previous declaration
   84 |   char* strstr(char* s1, const char* s2);
      |                                        ^
/usr/include/string.h:310:14: note: previous declaration 'char* strstr(char*, const char*)'
  310 | extern char *strstr (char *__haystack, const char *__needle)
      |              ^~~~~~
p836.cpp:85:40: error: 'char* std::strtok(char*, const char*)' conflicts with a previous declaration
   85 |   char* strtok(char* s1, const char* s2);
      |                                        ^
/usr/include/string.h:336:14: note: previous declaration 'char* strtok(char*, const char*)'
  336 | extern char *strtok (char *__restrict __s, const char *__restrict __delim)
      |              ^~~~~~
p836.cpp:86:40: error: 'void* std::memset(void*, int, size_t)' conflicts with a previous declaration
   86 |   void* memset(void* s, int c, size_t n);
      |                                        ^
/usr/include/string.h:61:14: note: previous declaration 'void* memset(void*, int, size_t)'
   61 | extern void *memset (void *__s, int __c, size_t __n) __THROW __nonnull ((1));
      |              ^~~~~~
p836.cpp:87:28: error: 'char* std::strerror(int)' conflicts with a previous declaration
   87 |   char* strerror(int errnum);
      |                            ^
/usr/include/string.h:397:14: note: previous declaration 'char* strerror(int)'
  397 | extern char *strerror (int __errnum) __THROW;
      |              ^~~~~~~~
p836.cpp:88:30: error: 'std::size_t std::strlen(const char*)' conflicts with a previous declaration
   88 |   size_t strlen(const char* s);
      |                              ^
/usr/include/string.h:385:15: note: previous declaration 'size_t strlen(const char*)'
  385 | extern size_t strlen (const char *__s)
      |               ^~~~~~
p836.cpp:100:7: error: expected nested-name-specifier before 'size_t'
  100 | using size_t = see_17.2.4;
      |       ^~~~~~
p836.cpp:101:7: error: expected nested-name-specifier before 'mbstate_t'
  101 | using mbstate_t = see_below;
      |       ^~~~~~~~~
p836.cpp:102:7: error: expected nested-name-specifier before 'wint_t'
  102 | using wint_t = see_below;
      |       ^~~~~~
p836.cpp:104:61: error: 'int std::fwprintf(FILE*, const wchar_t*, ...)' conflicts with a previous declaration
  104 |        int fwprintf(FILE* stream, const wchar_t* format, ...);
      |                                                             ^
/usr/include/wchar.h:580:12: note: previous declaration 'int fwprintf(__FILE*, const wchar_t*, ...)'
  580 | extern int fwprintf (__FILE *__restrict __stream,
      |            ^~~~~~~~
p836.cpp:105:60: error: 'int std::fwscanf(FILE*, const wchar_t*, ...)' conflicts with a previous declaration
  105 |        int fwscanf(FILE* stream, const wchar_t* format, ...);
      |                                                            ^
/usr/include/wchar.h:621:12: note: previous declaration 'int fwscanf(__FILE*, const wchar_t*, ...)'
  621 | extern int fwscanf (__FILE *__restrict __stream,
      |            ^~~~~~~
p836.cpp:106:69: error: 'int std::swprintf(wchar_t*, size_t, const wchar_t*, ...)' conflicts with a previous declaration
  106 |        int swprintf(wchar_t* s, size_t n, const wchar_t* format, ...);
      |                                                                     ^
/usr/include/wchar.h:590:12: note: previous declaration 'int swprintf(wchar_t*, size_t, const wchar_t*, ...)'
  590 | extern int swprintf (wchar_t *__restrict __s, size_t __n,
      |            ^~~~~~~~
p836.cpp:107:64: error: 'int std::swscanf(const wchar_t*, const wchar_t*, ...)' conflicts with a previous declaration
  107 |        int swscanf(const wchar_t* s, const wchar_t* format, ...);
      |                                                                ^
/usr/include/wchar.h:631:12: note: previous declaration 'int swscanf(const wchar_t*, const wchar_t*, ...)'
  631 | extern int swscanf (const wchar_t *__restrict __s,
      |            ^~~~~~~
p836.cpp:108:70: error: 'int std::vfwprintf(FILE*, const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  108 |        int vfwprintf(FILE* stream, const wchar_t* format, va_list arg);
      |                                                                      ^
/usr/include/wchar.h:598:12: note: previous declaration 'int vfwprintf(__FILE*, const wchar_t*, __va_list_tag*)'
  598 | extern int vfwprintf (__FILE *__restrict __s,
      |            ^~~~~~~~~
p836.cpp:109:69: error: 'int std::vfwscanf(FILE*, const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  109 |        int vfwscanf(FILE* stream, const wchar_t* format, va_list arg);
      |                                                                     ^
/usr/include/wchar.h:671:12: note: previous declaration 'int vfwscanf(__FILE*, const wchar_t*, __va_list_tag*'
  671 | extern int vfwscanf (__FILE *__restrict __s,
      |            ^~~~~~~~
p836.cpp:110:78: error: 'int std::vswprintf(wchar_t*, size_t, const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  110 |        int vswprintf(wchar_t* s, size_t n, const wchar_t* format, va_list arg);
      |                                                                              ^
/usr/include/wchar.h:611:12: note: previous declaration 'int vswprintf(wchar_t*, size_t, const wchar_t*, __va_list_tag*)'
  611 | extern int vswprintf (wchar_t *__restrict __s, size_t __n,
      |            ^~~~~~~~~
p836.cpp:111:73: error: 'int std::vswscanf(const wchar_t*, const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  111 |        int vswscanf(const wchar_t* s, const wchar_t* format, va_list arg);
      |                                                                         ^
/usr/include/wchar.h:683:12: note: previous declaration 'int vswscanf(const wchar_t*, const wchar_t*, __va_list_tag*)'
  683 | extern int vswscanf (const wchar_t *__restrict __s,
      |            ^~~~~~~~
p836.cpp:112:55: error: 'int std::vwprintf(const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  112 |        int vwprintf(const wchar_t* format, va_list arg);
      |                                                       ^
/usr/include/wchar.h:606:12: note: previous declaration 'int vwprintf(const wchar_t*, __va_list_tag*)'
  606 | extern int vwprintf (const wchar_t *__restrict __format,
      |            ^~~~~~~~
p836.cpp:113:54: error: 'int std::vwscanf(const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  113 |        int vwscanf(const wchar_t* format, va_list arg);
      |                                                      ^
/usr/include/wchar.h:679:12: note: previous declaration 'int vwscanf(const wchar_t*, __va_list_tag*)'
  679 | extern int vwscanf (const wchar_t *__restrict __format,
      |            ^~~~~~~
p836.cpp:114:46: error: 'int std::wprintf(const wchar_t*, ...)' conflicts with a previous declaration
  114 |        int wprintf(const wchar_t* format, ...);
      |                                              ^
/usr/include/wchar.h:587:12: note: previous declaration 'int wprintf(const wchar_t*, ...)'
  587 | extern int wprintf (const wchar_t *__restrict __format, ...)
      |            ^~~~~~~
p836.cpp:115:45: error: 'int std::wscanf(const wchar_t*, ...)' conflicts with a previous declaration
  115 |        int wscanf(const wchar_t* format, ...);
      |                                             ^
/usr/include/wchar.h:628:12: note: previous declaration 'int wscanf(const wchar_t*, ...)'
  628 | extern int wscanf (const wchar_t *__restrict __format, ...)
      |            ^~~~~~
p836.cpp:116:34: error: 'wint_t std::fgetwc(FILE*)' conflicts with a previous declaration
  116 |        wint_t fgetwc(FILE* stream);
      |                                  ^
/usr/include/wchar.h:726:15: note: previous declaration 'wint_t fgetwc(__FILE*)'
  726 | extern wint_t fgetwc (__FILE *__stream);
      |               ^~~~~~
p836.cpp:117:55: error: 'wchar_t* std::fgetws(wchar_t*, int, FILE*)' conflicts with a previous declaration
  117 |        wchar_t* fgetws(wchar_t* s, int n, FILE* stream);
      |                                                       ^
/usr/include/wchar.h:755:17: note: previous declaration 'wchar_t* fgetws(wchar_t*, int, __FILE*)'
  755 | extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
      |                 ^~~~~~
p836.cpp:118:45: error: 'wint_t std::fputwc(wchar_t, FILE*)' conflicts with a previous declaration
  118 |        wint_t fputwc(wchar_t c, FILE* stream);
      |                                             ^
/usr/include/wchar.h:740:15: note: previous declaration 'wint_t fputwc(wchar_t, __FILE*)'
  740 | extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
      |               ^~~~~~
p836.cpp:119:42: error: 'int std::fputws(const wchar_t*, FILE*)' conflicts with a previous declaration
  119 | int fputws(const wchar_t* s, FILE* stream);
      |                                          ^
/usr/include/wchar.h:762:12: note: previous declaration 'int fputws(const wchar_t*, __FILE*)'
  762 | extern int fputws (const wchar_t *__restrict __ws,
      |            ^~~~~~
p836.cpp:120:33: error: 'int std::fwide(FILE*, int)' conflicts with a previous declaration
  120 | int fwide(FILE* stream, int mode);
      |                                 ^
/usr/include/wchar.h:573:12: note: previous declaration 'int fwide(__FILE*, int)'
  573 | extern int fwide (__FILE *__fp, int __mode) __THROW;
      |            ^~~~~
p836.cpp:121:26: error: 'wint_t std::getwc(FILE*)' conflicts with a previous declaration
  121 | wint_t getwc(FILE* stream);
      |                          ^
/usr/include/wchar.h:727:15: note: previous declaration 'wint_t getwc(__FILE*)'
  727 | extern wint_t getwc (__FILE *__stream);
      |               ^~~~~
p836.cpp:122:17: error: 'wint_t std::getwchar()' conflicts with a previous declaration
  122 | wint_t getwchar();
      |                 ^
/usr/include/wchar.h:733:15: note: previous declaration 'wint_t getwchar()'
  733 | extern wint_t getwchar (void);
      |               ^~~~~~~~
p836.cpp:123:37: error: 'wint_t std::putwc(wchar_t, FILE*)' conflicts with a previous declaration
  123 | wint_t putwc(wchar_t c, FILE* stream);
      |                                     ^
/usr/include/wchar.h:741:15: note: previous declaration 'wint_t putwc(wchar_t, __FILE*)'
  741 | extern wint_t putwc (wchar_t __wc, __FILE *__stream);
      |               ^~~~~
p836.cpp:124:26: error: 'wint_t std::putwchar(wchar_t)' conflicts with a previous declaration
  124 | wint_t putwchar(wchar_t c);
      |                          ^
/usr/include/wchar.h:747:15: note: previous declaration 'wint_t putwchar(wchar_t)'
  747 | extern wint_t putwchar (wchar_t __wc);
      |               ^~~~~~~~
p836.cpp:125:38: error: 'wint_t std::ungetwc(wint_t, FILE*)' conflicts with a previous declaration
  125 | wint_t ungetwc(wint_t c, FILE* stream);
      |                                      ^
/usr/include/wchar.h:770:15: note: previous declaration 'wint_t ungetwc(wint_t, __FILE*)'
  770 | extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
      |               ^~~~~~~
p836.cpp:126:52: error: 'double std::wcstod(const wchar_t*, wchar_t**)' conflicts with a previous declaration
  126 | double wcstod(const wchar_t* nptr, wchar_t** endptr);
      |                                                    ^
/usr/include/wchar.h:377:15: note: previous declaration 'double wcstod(const wchar_t*, wchar_t**)'
  377 | extern double wcstod (const wchar_t *__restrict __nptr,
      |               ^~~~~~
p836.cpp:127:51: error: 'float std::wcstof(const wchar_t*, wchar_t**)' conflicts with a previous declaration
  127 | float wcstof(const wchar_t* nptr, wchar_t** endptr);
      |                                                   ^
/usr/include/wchar.h:382:14: note: previous declaration 'float wcstof(const wchar_t*, wchar_t**)'
  382 | extern float wcstof (const wchar_t *__restrict __nptr,
      |              ^~~~~~
p836.cpp:128:58: error: 'long double std::wcstold(const wchar_t*, wchar_t**)' conflicts with a previous declaration
  128 | long double wcstold(const wchar_t* nptr, wchar_t** endptr);
      |                                                          ^
/usr/include/wchar.h:384:20: note: previous declaration 'long double wcstold(const wchar_t*, wchar_t**)'
  384 | extern long double wcstold (const wchar_t *__restrict __nptr,
      |                    ^~~~~~~
p836.cpp:129:64: error: 'long int std::wcstol(const wchar_t*, wchar_t**, int)' conflicts with a previous declaration
  129 | long int wcstol(const wchar_t* nptr, wchar_t** endptr, int base);
      |                                                                ^
/usr/include/wchar.h:428:17: note: previous declaration 'long int wcstol(const wchar_t*, wchar_t**, int)'
  428 | extern long int wcstol (const wchar_t *__restrict __nptr,
      |                 ^~~~~~
p836.cpp:130:70: error: 'long long int std::wcstoll(const wchar_t*, wchar_t**, int)' conflicts with a previous declaration
  130 | long long int wcstoll(const wchar_t* nptr, wchar_t** endptr, int base);
      |                                                                      ^
/usr/include/wchar.h:441:22: note: previous declaration 'long long int wcstoll(const wchar_t*, wchar_t**, int'
  441 | extern long long int wcstoll (const wchar_t *__restrict __nptr,
      |                      ^~~~~~~
p836.cpp:131:74: error: 'long unsigned int std::wcstoul(const wchar_t*, wchar_t**, int)' conflicts with a previous declaration
  131 | unsigned long int wcstoul(const wchar_t* nptr, wchar_t** endptr, int base);
      |                                                                          ^
/usr/include/wchar.h:433:26: note: previous declaration 'long unsigned int wcstoul(const wchar_t*, wchar_t**, int)'
  433 | extern unsigned long int wcstoul (const wchar_t *__restrict __nptr,
      |                          ^~~~~~~
p836.cpp:132:80: error: 'long long unsigned int std::wcstoull(const wchar_t*, wchar_t**, int)' conflicts with a previous declaration
  132 | unsigned long long int wcstoull(const wchar_t* nptr, wchar_t** endptr, int base);
      |                                                                                ^
/usr/include/wchar.h:448:31: note: previous declaration 'long long unsigned int wcstoull(const wchar_t*, wchar_t**, int)'
  448 | extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr,
      |                               ^~~~~~~~
p836.cpp:133:47: error: 'wchar_t* std::wcscpy(wchar_t*, const wchar_t*)' conflicts with a previous declaration
  133 | wchar_t* wcscpy(wchar_t* s1, const wchar_t* s2);
      |                                               ^
/usr/include/wchar.h:87:17: note: previous declaration 'wchar_t* wcscpy(wchar_t*, const wchar_t*)'
   87 | extern wchar_t *wcscpy (wchar_t *__restrict __dest,
      |                 ^~~~~~
p836.cpp:134:58: error: 'wchar_t* std::wcsncpy(wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  134 | wchar_t* wcsncpy(wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                          ^
/usr/include/wchar.h:92:17: note: previous declaration 'wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t)'
   92 | extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
      |                 ^~~~~~~
p836.cpp:135:58: error: 'wchar_t* std::wmemcpy(wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  135 | wchar_t* wmemcpy(wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                          ^
/usr/include/wchar.h:262:17: note: previous declaration 'wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t)'
  262 | extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
      |                 ^~~~~~~
p836.cpp:136:59: error: 'wchar_t* std::wmemmove(wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  136 | wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                           ^
/usr/include/wchar.h:267:17: note: previous declaration 'wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t)'
  267 | extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n)
      |                 ^~~~~~~~
p836.cpp:137:47: error: 'wchar_t* std::wcscat(wchar_t*, const wchar_t*)' conflicts with a previous declaration
  137 | wchar_t* wcscat(wchar_t* s1, const wchar_t* s2);
      |                                               ^
/usr/include/wchar.h:97:17: note: previous declaration 'wchar_t* wcscat(wchar_t*, const wchar_t*)'
   97 | extern wchar_t *wcscat (wchar_t *__restrict __dest,
      |                 ^~~~~~
p836.cpp:138:58: error: 'wchar_t* std::wcsncat(wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  138 | wchar_t* wcsncat(wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                          ^
/usr/include/wchar.h:101:17: note: previous declaration 'wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t)'
  101 | extern wchar_t *wcsncat (wchar_t *__restrict __dest,
      |                 ^~~~~~~
p836.cpp:139:48: error: 'int std::wcscmp(const wchar_t*, const wchar_t*)' conflicts with a previous declaration
  139 | int wcscmp(const wchar_t* s1, const wchar_t* s2);
      |                                                ^
/usr/include/wchar.h:106:12: note: previous declaration 'int wcscmp(const wchar_t*, const wchar_t*)'
  106 | extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2)
      |            ^~~~~~
p836.cpp:140:49: error: 'int std::wcscoll(const wchar_t*, const wchar_t*)' conflicts with a previous declaration
  140 | int wcscoll(const wchar_t* s1, const wchar_t* s2);
      |                                                 ^
/usr/include/wchar.h:131:12: note: previous declaration 'int wcscoll(const wchar_t*, const wchar_t*)'
  131 | extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) __THROW;
      |            ^~~~~~~
p836.cpp:141:59: error: 'int std::wcsncmp(const wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  141 | int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                           ^
/usr/include/wchar.h:109:12: note: previous declaration 'int wcsncmp(const wchar_t*, const wchar_t*, size_t)'
  109 | extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
      |            ^~~~~~~
p836.cpp:142:56: error: 'std::size_t std::wcsxfrm(wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  142 | size_t wcsxfrm(wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                        ^
/usr/include/wchar.h:135:15: note: previous declaration 'size_t wcsxfrm(wchar_t*, const wchar_t*, size_t)'
  135 | extern size_t wcsxfrm (wchar_t *__restrict __s1,
      |               ^~~~~~~
p836.cpp:143:59: error: 'int std::wmemcmp(const wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  143 | int wmemcmp(const wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                           ^
/usr/include/wchar.h:258:12: note: previous declaration 'int wmemcmp(const wchar_t*, const wchar_t*, size_t)'
  258 | extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
      |            ^~~~~~~
p836.cpp:144:50: error: 'const wchar_t* std::wcschr(const wchar_t*, wchar_t)' conflicts with a previous declaration
  144 | const wchar_t* wcschr(const wchar_t* s, wchar_t c);
      |                                                  ^
/usr/include/wchar.h:161:29: note: previous declaration 'const wchar_t* wcschr(const wchar_t*, wchar_t)'
  161 | extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc)
      |                             ^~~~~~
p836.cpp:148:32: error: 'int std::mbsinit(const mbstate_t*)' conflicts with a previous declaration
  148 | int mbsinit(const mbstate_t* ps);
      |                                ^
/usr/include/wchar.h:292:12: note: previous declaration 'int mbsinit(const mbstate_t*)'
  292 | extern int mbsinit (const mbstate_t *__ps) __THROW __attribute_pure__;
      |            ^~~~~~~
p836.cpp:149:53: error: 'std::size_t std::mbrlen(const char*, size_t, mbstate_t*)' conflicts with a previous declaration
  149 | size_t mbrlen(const char* s, size_t n, mbstate_t* ps);
      |                                                     ^
/usr/include/wchar.h:307:15: note: previous declaration 'size_t mbrlen(const char*, size_t, mbstate_t*)'
  307 | extern size_t mbrlen (const char *__restrict __s, size_t __n,
      |               ^~~~~~
p836.cpp:150:68: error: 'std::size_t std::mbrtowc(wchar_t*, const char*, size_t, mbstate_t*)' conflicts with a previous declaration
  150 | size_t mbrtowc(wchar_t* pwc, const char* s, size_t n, mbstate_t* ps); size_t wcrtomb(char* s, wchar_t wc, mbstate_t* ps);
      |                                                                    ^
/usr/include/wchar.h:296:15: note: previous declaration 'size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*)'
  296 | extern size_t mbrtowc (wchar_t *__restrict __pwc,
      |               ^~~~~~~
p836.cpp:150:120: error: 'std::size_t std::wcrtomb(char*, wchar_t, mbstate_t*)' conflicts with a previous declaration
  150 | _t* pwc, const char* s, size_t n, mbstate_t* ps); size_t wcrtomb(char* s, wchar_t wc, mbstate_t* ps);
      |                                                                                                    ^

/usr/include/wchar.h:301:15: note: previous declaration 'size_t wcrtomb(char*, wchar_t, mbstate_t*)'
  301 | extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
      |               ^~~~~~~
p836.cpp:151:82: error: 'std::size_t std::mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*)' conflicts with a previous declaration
  151 |        size_t mbsrtowcs(wchar_t* dst, const char** src, size_t len, mbstate_t* ps);
      |                                                                                  ^
/usr/include/wchar.h:337:15: note: previous declaration 'size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*)'
  337 | extern size_t mbsrtowcs (wchar_t *__restrict __dst,
      |               ^~~~~~~~~
p836.cpp:152:82: error: 'std::size_t std::wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*)' conflicts with a previous declaration
  152 |        size_t wcsrtombs(char* dst, const wchar_t** src, size_t len, mbstate_t* ps);
      |                                                                                  ^
/usr/include/wchar.h:343:15: note: previous declaration 'size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*)'
  343 | extern size_t wcsrtombs (char *__restrict __dst,
      |               ^~~~~~~~~
p836.cpp:174:74: error: reference to 'tm' is ambiguous
  174 | size_t wcsftime(wchar_t* s, size_t maxsize, const wchar_t* format, const tm* timeptr); wint_t btowc(int c);
      |                                                                          ^~
p836.cpp:103:8: note: candidates are: 'struct std::tm'
  103 | struct tm;
      |        ^~
In file included from /usr/include/time.h:39,
                 from /usr/include/pthread.h:23,
                 from /usr/local/include/c++/12.1.0/x86_64-linux-gnu/bits/gthr-default.h:35,
                 from /usr/local/include/c++/12.1.0/x86_64-linux-gnu/bits/gthr.h:148,
                 from /usr/local/include/c++/12.1.0/ext/atomicity.h:35,
                 from /usr/local/include/c++/12.1.0/bits/ios_base.h:39,
                 from /usr/local/include/c++/12.1.0/ios:42:
/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h:7:8: note:                 'struct tm'
    7 | struct tm
      |        ^~
p836.cpp:180:7: error: expected nested-name-specifier before 'mbstate_t'
  180 | using mbstate_t = see_below; using size_t = see_17.2.4;
      |       ^~~~~~~~~
p836.cpp:180:36: error: expected nested-name-specifier before 'size_t'
  180 | using mbstate_t = see_below; using size_t = see_17.2.4;
      |                                    ^~~~~~
p836.cpp:181:20: error: 'char8_t' was not declared in this scope; did you mean 'wchar_t'?
  181 |     size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                    ^~~~~~~
      |                    wchar_t
p836.cpp:181:29: error: 'pc8' was not declared in this scope
  181 |     size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                             ^~~
p836.cpp:181:34: error: expected primary-expression before 'const'
  181 |     size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                                  ^~~~~
p836.cpp:181:56: error: expected primary-expression before 'n'
  181 |     size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                                                        ^
p836.cpp:181:68: error: expected primary-expression before '*' token
  181 |     size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                                                                    ^
p836.cpp:181:70: error: 'ps' was not declared in this scope; did you mean 'ws'?
  181 |     size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                                                                      ^~
      |                                                                      ws
p836.cpp:181:72: error: expression list treated as compound expression in initializer [-fpermissive]
  181 |     size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                                                                        ^
p836.cpp:182:29: error: 'char8_t' has not been declared
  182 |     size_t c8rtomb(char* s, char8_t c8, mbstate_t* ps);
      |                             ^~~~~~~
p836.cpp:183:21: error: 'char16_t' was not declared in this scope
  183 |     size_t mbrtoc16(char16_t* pc16, const char* s, size_t n, mbstate_t* ps);
      |                     ^~~~~~~~
p836.cpp:183:31: error: 'pc16' was not declared in this scope
  183 |     size_t mbrtoc16(char16_t* pc16, const char* s, size_t n, mbstate_t* ps);
      |                               ^~~~
p836.cpp:183:37: error: expected primary-expression before 'const'
  183 |     size_t mbrtoc16(char16_t* pc16, const char* s, size_t n, mbstate_t* ps);
      |                                     ^~~~~
p836.cpp:183:59: error: expected primary-expression before 'n'
  183 |     size_t mbrtoc16(char16_t* pc16, const char* s, size_t n, mbstate_t* ps);
      |                                                           ^
p836.cpp:183:71: error: expected primary-expression before '*' token
  183 |     size_t mbrtoc16(char16_t* pc16, const char* s, size_t n, mbstate_t* ps);
      |                                                                       ^
p836.cpp:183:73: error: 'ps' was not declared in this scope; did you mean 'ws'?
  183 |     size_t mbrtoc16(char16_t* pc16, const char* s, size_t n, mbstate_t* ps);
      |                                                                         ^~
      |                                                                         ws
p836.cpp:183:75: error: expression list treated as compound expression in initializer [-fpermissive]
  183 |     size_t mbrtoc16(char16_t* pc16, const char* s, size_t n, mbstate_t* ps);
      |                                                                           ^
p836.cpp:184:30: error: 'char16_t' has not been declared
  184 |     size_t c16rtomb(char* s, char16_t c16, mbstate_t* ps);
      |                              ^~~~~~~~
p836.cpp:185:21: error: 'char32_t' was not declared in this scope
  185 |     size_t mbrtoc32(char32_t* pc32, const char* s, size_t n, mbstate_t* ps);
      |                     ^~~~~~~~
p836.cpp:185:31: error: 'pc32' was not declared in this scope
  185 |     size_t mbrtoc32(char32_t* pc32, const char* s, size_t n, mbstate_t* ps);
      |                               ^~~~
p836.cpp:185:37: error: expected primary-expression before 'const'
  185 |     size_t mbrtoc32(char32_t* pc32, const char* s, size_t n, mbstate_t* ps);
      |                                     ^~~~~
p836.cpp:185:59: error: expected primary-expression before 'n'
  185 |     size_t mbrtoc32(char32_t* pc32, const char* s, size_t n, mbstate_t* ps);
      |                                                           ^
p836.cpp:185:71: error: expected primary-expression before '*' token
  185 |     size_t mbrtoc32(char32_t* pc32, const char* s, size_t n, mbstate_t* ps);
      |                                                                       ^
p836.cpp:185:73: error: 'ps' was not declared in this scope; did you mean 'ws'?
  185 |     size_t mbrtoc32(char32_t* pc32, const char* s, size_t n, mbstate_t* ps);
      |                                                                         ^~
      |                                                                         ws
p836.cpp:185:75: error: expression list treated as compound expression in initializer [-fpermissive]
  185 |     size_t mbrtoc32(char32_t* pc32, const char* s, size_t n, mbstate_t* ps);
      |                                                                           ^
p836.cpp:186:30: error: 'char32_t' has not been declared
  186 |     size_t c32rtomb(char* s, char32_t c32, mbstate_t* ps);
      |                              ^~~~~~~~
p836.cpp:210:16: error: 'char8_t' was not declared in this scope; did you mean 'wchar_t'?
  210 | size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                ^~~~~~~
      |                wchar_t
p836.cpp:210:25: error: 'pc8' was not declared in this scope
  210 | size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                         ^~~
p836.cpp:210:30: error: expected primary-expression before 'const'
  210 | size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                              ^~~~~
p836.cpp:210:52: error: expected primary-expression before 'n'
  210 | size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                                                    ^
p836.cpp:210:64: error: expected primary-expression before '*' token
  210 | size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                                                                ^
p836.cpp:210:66: error: 'ps' was not declared in this scope
  210 | size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                                                                  ^~
p836.cpp:210:68: error: expression list treated as compound expression in initializer [-fpermissive]
  210 | size_t mbrtoc8(char8_t* pc8, const char* s, size_t n, mbstate_t* ps);
      |                                                                    ^
p836.cpp:218:25: error: 'char8_t' has not been declared
  218 | size_t c8rtomb(char* s, char8_t c8, mbstate_t* ps);
      |                         ^~~~~~~

$ g++ p836.cpp -std=2b -o p836g -I. -Wall
p836.cpp:56: warning: "WEOF" redefined
   56 | #define WEOF see_below
      | 
In file included from /usr/local/include/c++/12.1.0/cwchar:44,
                 from /usr/local/include/c++/12.1.0/bits/postypes.h:40,
                 from /usr/local/include/c++/12.1.0/iosfwd:40,
                 from /usr/local/include/c++/12.1.0/ios:38,
                 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 p836.cpp:10:
/usr/include/wchar.h:64: note: this is the location of the previous definition
   64 | # define WEOF (0xffffffffu)
      | 
p836.cpp:61:22: error: too many decimal points in number
   61 | using size_t = see_17.2.4;
      |                      ^~~~
p836.cpp:90: warning: "NULL" redefined
   90 | #define NULL see_17.2.3
      | 
In file included from /usr/include/unistd.h:226,
                 from /usr/local/include/c++/12.1.0/bits/atomic_wait.h:44,
                 from /usr/local/include/c++/12.1.0/bits/atomic_base.h:41,
                 from /usr/local/include/c++/12.1.0/atomic:41,
                 from N4910.h:11:
/usr/local/lib/gcc/x86_64-linux-gnu/12.1.0/include/stddef.h:401: note: this is the location of the previous definition
  401 | #define NULL __null
      | 
p836.cpp:100:22: error: too many decimal points in number
  100 | using size_t = see_17.2.4;
      |                      ^~~~
p836.cpp:155: warning: "WCHAR_MAX" redefined
  155 | #define WCHAR_MAX see_below
      | 
/usr/include/wchar.h:60: note: this is the location of the previous definition
   60 | # define WCHAR_MAX __WCHAR_MAX
      | 
p836.cpp:156: warning: "WCHAR_MIN" redefined
  156 | #define WCHAR_MIN see_below
      | 
/usr/include/wchar.h:59: note: this is the location of the previous definition
   59 | # define WCHAR_MIN __WCHAR_MIN
      | 
p836.cpp:157: warning: "WEOF" redefined
  157 | #define WEOF see below
      | 
p836.cpp:56: note: this is the location of the previous definition
   56 | #define WEOF see_below
      | 
p836.cpp:180:51: error: too many decimal points in number
  180 | using mbstate_t = see_below; using size_t = see_17.2.4;
      |                                                   ^~~~
p836.cpp:16:22: error: 'int std::isalnum(int)' conflicts with a previous declaration
   16 |     int isalnum(int c);
      |                      ^
In file included from /usr/local/include/c++/12.1.0/cctype:42,
                 from /usr/local/include/c++/12.1.0/bits/localefwd.h:42,
                 from /usr/local/include/c++/12.1.0/ios:41:
/usr/include/ctype.h:108:1: note: previous declaration 'int isalnum(int)'
  108 | __exctype (isalnum);
      | ^~~~~~~~~
p836.cpp:17:22: error: 'int std::isalpha(int)' conflicts with a previous declaration
   17 |     int isalpha(int c);
      |                      ^
/usr/include/ctype.h:109:1: note: previous declaration 'int isalpha(int)'
  109 | __exctype (isalpha);
      | ^~~~~~~~~
p836.cpp:18:22: error: 'int std::isblank(int)' conflicts with a previous declaration
   18 |     int isblank(int c);
      |                      ^
/usr/include/ctype.h:130:1: note: previous declaration 'int isblank(int)'
  130 | __exctype (isblank);
      | ^~~~~~~~~
p836.cpp:19:22: error: 'int std::iscntrl(int)' conflicts with a previous declaration
   19 |     int iscntrl(int c);
      |                      ^
/usr/include/ctype.h:110:1: note: previous declaration 'int iscntrl(int)'
  110 | __exctype (iscntrl);
      | ^~~~~~~~~
p836.cpp:20:22: error: 'int std::isdigit(int)' conflicts with a previous declaration
   20 |     int isdigit(int c);
      |                      ^
/usr/include/ctype.h:111:1: note: previous declaration 'int isdigit(int)'
  111 | __exctype (isdigit);
      | ^~~~~~~~~
p836.cpp:21:22: error: 'int std::isgraph(int)' conflicts with a previous declaration
   21 |     int isgraph(int c);
      |                      ^
/usr/include/ctype.h:113:1: note: previous declaration 'int isgraph(int)'
  113 | __exctype (isgraph);
      | ^~~~~~~~~
p836.cpp:22:22: error: 'int std::islower(int)' conflicts with a previous declaration
   22 |     int islower(int c);
      |                      ^
/usr/include/ctype.h:112:1: note: previous declaration 'int islower(int)'
  112 | __exctype (islower);
      | ^~~~~~~~~
p836.cpp:23:22: error: 'int std::isprint(int)' conflicts with a previous declaration
   23 |     int isprint(int c);
      |                      ^
/usr/include/ctype.h:114:1: note: previous declaration 'int isprint(int)'
  114 | __exctype (isprint);
      | ^~~~~~~~~
p836.cpp:24:22: error: 'int std::ispunct(int)' conflicts with a previous declaration
   24 |     int ispunct(int c);
      |                      ^
/usr/include/ctype.h:115:1: note: previous declaration 'int ispunct(int)'
  115 | __exctype (ispunct);
      | ^~~~~~~~~
p836.cpp:25:22: error: 'int std::isspace(int)' conflicts with a previous declaration
   25 |     int isspace(int c);
      |                      ^
/usr/include/ctype.h:116:1: note: previous declaration 'int isspace(int)'
  116 | __exctype (isspace);
      | ^~~~~~~~~
p836.cpp:26:22: error: 'int std::isupper(int)' conflicts with a previous declaration
   26 |     int isupper(int c);
      |                      ^
/usr/include/ctype.h:117:1: note: previous declaration 'int isupper(int)'
  117 | __exctype (isupper);
      | ^~~~~~~~~
p836.cpp:27:23: error: 'int std::isxdigit(int)' conflicts with a previous declaration
   27 |     int isxdigit(int c);
      |                       ^
/usr/include/ctype.h:118:1: note: previous declaration 'int isxdigit(int)'
  118 | __exctype (isxdigit);
      | ^~~~~~~~~
p836.cpp:28:22: error: 'int std::tolower(int)' conflicts with a previous declaration
   28 |     int tolower(int c);
      |                      ^
/usr/include/ctype.h:122:12: note: previous declaration 'int tolower(int)'
  122 | extern int tolower (int __c) __THROW;
      |            ^~~~~~~
p836.cpp:29:22: error: 'int std::toupper(int)' conflicts with a previous declaration
   29 |     int toupper(int c);
      |                      ^
/usr/include/ctype.h:125:12: note: previous declaration 'int toupper(int)'
  125 | extern int toupper (int __c) __THROW;
      |            ^~~~~~~
p836.cpp:34:16: error: 'see_below' does not name a type
   34 | using wint_t = see_below;
      |                ^~~~~~~~~
p836.cpp:35:19: error: 'see_below' does not name a type
   35 | using wctrans_t = see_below;
      |                   ^~~~~~~~~
p836.cpp:36:18: error: 'see_below' does not name a type
   36 | using wctype_t = see_below;
      |                  ^~~~~~~~~
p836.cpp:37:27: error: 'int std::iswalnum(wint_t)' conflicts with a previous declaration
   37 |     int iswalnum(wint_t wc);
      |                           ^
In file included from /usr/include/wctype.h:38,
                 from /usr/local/include/c++/12.1.0/cwctype:50,
                 from /usr/local/include/c++/12.1.0/bits/locale_facets.h:39,
                 from /usr/local/include/c++/12.1.0/bits/basic_ios.h:37,
                 from /usr/local/include/c++/12.1.0/ios:44:
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:95:12: note: previous declaration 'int iswalnum(wint_t)'
   95 | extern int iswalnum (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:38:27: error: 'int std::iswalpha(wint_t)' conflicts with a previous declaration
   38 |     int iswalpha(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:101:12: note: previous declaration 'int iswalpha(wint_t)'
  101 | extern int iswalpha (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:39:27: error: 'int std::iswblank(wint_t)' conflicts with a previous declaration
   39 |     int iswblank(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:146:12: note: previous declaration 'int iswblank(wint_t)'
  146 | extern int iswblank (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:40:27: error: 'int std::iswcntrl(wint_t)' conflicts with a previous declaration
   40 |     int iswcntrl(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:104:12: note: previous declaration 'int iswcntrl(wint_t)'
  104 | extern int iswcntrl (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:41:27: error: 'int std::iswdigit(wint_t)' conflicts with a previous declaration
   41 |     int iswdigit(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:108:12: note: previous declaration 'int iswdigit(wint_t)'
  108 | extern int iswdigit (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:42:27: error: 'int std::iswgraph(wint_t)' conflicts with a previous declaration
   42 |     int iswgraph(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:112:12: note: previous declaration 'int iswgraph(wint_t)'
  112 | extern int iswgraph (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:43:27: error: 'int std::iswlower(wint_t)' conflicts with a previous declaration
   43 |     int iswlower(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:117:12: note: previous declaration 'int iswlower(wint_t)'
  117 | extern int iswlower (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:44:27: error: 'int std::iswprint(wint_t)' conflicts with a previous declaration
   44 |     int iswprint(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:120:12: note: previous declaration 'int iswprint(wint_t)'
  120 | extern int iswprint (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:45:27: error: 'int std::iswpunct(wint_t)' conflicts with a previous declaration
   45 |     int iswpunct(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:125:12: note: previous declaration 'int iswpunct(wint_t)'
  125 | extern int iswpunct (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:46:27: error: 'int std::iswspace(wint_t)' conflicts with a previous declaration
   46 |     int iswspace(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:130:12: note: previous declaration 'int iswspace(wint_t)'
  130 | extern int iswspace (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:47:27: error: 'int std::iswupper(wint_t)' conflicts with a previous declaration
   47 |     int iswupper(wint_t wc);
      |                           ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:135:12: note: previous declaration 'int iswupper(wint_t)'
  135 | extern int iswupper (wint_t __wc) __THROW;
      |            ^~~~~~~~
p836.cpp:48:28: error: 'int std::iswxdigit(wint_t)' conflicts with a previous declaration
   48 |     int iswxdigit(wint_t wc);
      |                            ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:140:12: note: previous declaration 'int iswxdigit(wint_t)'
  140 | extern int iswxdigit (wint_t __wc) __THROW;
      |            ^~~~~~~~~
p836.cpp:49:42: error: 'int std::iswctype(wint_t, wctype_t)' conflicts with a previous declaration
   49 |     int iswctype(wint_t wc, wctype_t desc);
      |                                          ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:159:12: note: previous declaration 'int iswctype(wint_t, wctype_t)'
  159 | extern int iswctype (wint_t __wc, wctype_t __desc) __THROW;
      |            ^~~~~~~~
p836.cpp:50:41: error: 'wctype_t std::wctype(const char*)' conflicts with a previous declaration
   50 |     wctype_t wctype(const char* property);
      |                                         ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:155:17: note: previous declaration 'wctype_t wctype(const char*)'
  155 | extern wctype_t wctype (const char *__property) __THROW;
      |                 ^~~~~~
p836.cpp:51:30: error: 'wint_t std::towlower(wint_t)' conflicts with a previous declaration
   51 |     wint_t towlower(wint_t wc);
      |                              ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:166:15: note: previous declaration 'wint_t towlower(wint_t)'
  166 | extern wint_t towlower (wint_t __wc) __THROW;
      |               ^~~~~~~~
p836.cpp:52:30: error: 'wint_t std::towupper(wint_t)' conflicts with a previous declaration
   52 |     wint_t towupper(wint_t wc);
      |                              ^
/usr/include/x86_64-linux-gnu/bits/wctype-wchar.h:169:15: note: previous declaration 'wint_t towupper(wint_t)'
  169 | extern wint_t towupper (wint_t __wc) __THROW;
      |               ^~~~~~~~
p836.cpp:53:47: error: 'wint_t std::towctrans(wint_t, wctrans_t)' conflicts with a previous declaration
   53 |     wint_t towctrans(wint_t wc, wctrans_t desc);
      |                                               ^
/usr/include/wctype.h:55:15: note: previous declaration 'wint_t towctrans(wint_t, wctrans_t)'
   55 | extern wint_t towctrans (wint_t __wc, wctrans_t __desc) __THROW;
      |               ^~~~~~~~~
p836.cpp:54:43: error: 'const __int32_t* std::wctrans(const char*)' conflicts with a previous declaration
   54 |     wctrans_t wctrans(const char* property);
      |                                           ^
/usr/include/wctype.h:52:18: note: previous declaration 'const __int32_t* wctrans(const char*)'
   52 | extern wctrans_t wctrans (const char *__property) __THROW;
      |                  ^~~~~~~
p836.cpp:61:16: error: 'see_17' does not name a type
   61 | using size_t = see_17.2.4;
      |                ^~~~~~
p836.cpp:62:50: error: 'void* std::memcpy(void*, const void*, size_t)' conflicts with a previous declaration
   62 |   void* memcpy(void* s1, const void* s2, size_t n);
      |                                                  ^
In file included from /usr/local/include/c++/12.1.0/cstring:42,
                 from N4910.h:5:
/usr/include/string.h:43:14: note: previous declaration 'void* memcpy(void*, const void*, size_t)'
   43 | extern void *memcpy (void *__restrict __dest, const void *__restrict __src,
      |              ^~~~~~
p836.cpp:63:51: error: 'void* std::memmove(void*, const void*, size_t)' conflicts with a previous declaration
   63 |   void* memmove(void* s1, const void* s2, size_t n);
      |                                                   ^
/usr/include/string.h:47:14: note: previous declaration 'void* memmove(void*, const void*, size_t)'
   47 | extern void *memmove (void *__dest, const void *__src, size_t __n)
      |              ^~~~~~~
p836.cpp:64:40: error: 'char* std::strcpy(char*, const char*)' conflicts with a previous declaration
   64 |   char* strcpy(char* s1, const char* s2);
      |                                        ^
/usr/include/string.h:122:14: note: previous declaration 'char* strcpy(char*, const char*)'
  122 | extern char *strcpy (char *__restrict __dest, const char *__restrict __src)
      |              ^~~~~~
p836.cpp:65:51: error: 'char* std::strncpy(char*, const char*, size_t)' conflicts with a previous declaration
   65 |   char* strncpy(char* s1, const char* s2, size_t n);
      |                                                   ^
/usr/include/string.h:125:14: note: previous declaration 'char* strncpy(char*, const char*, size_t)'
  125 | extern char *strncpy (char *__restrict __dest,
      |              ^~~~~~~
p836.cpp:66:40: error: 'char* std::strcat(char*, const char*)' conflicts with a previous declaration
   66 |   char* strcat(char* s1, const char* s2);
      |                                        ^
/usr/include/string.h:130:14: note: previous declaration 'char* strcat(char*, const char*)'
  130 | extern char *strcat (char *__restrict __dest, const char *__restrict __src)
      |              ^~~~~~
p836.cpp:67:51: error: 'char* std::strncat(char*, const char*, size_t)' conflicts with a previous declaration
   67 |   char* strncat(char* s1, const char* s2, size_t n);
      |                                                   ^
/usr/include/string.h:133:14: note: previous declaration 'char* strncat(char*, const char*, size_t)'
  133 | extern char *strncat (char *__restrict __dest, const char *__restrict __src,
      |              ^~~~~~~
p836.cpp:68:54: error: 'int std::memcmp(const void*, const void*, size_t)' conflicts with a previous declaration
   68 |   int memcmp(const void* s1, const void* s2, size_t n);
      |                                                      ^
/usr/include/string.h:64:12: note: previous declaration 'int memcmp(const void*, const void*, size_t)'
   64 | extern int memcmp (const void *__s1, const void *__s2, size_t __n)
      |            ^~~~~~
p836.cpp:69:44: error: 'int std::strcmp(const char*, const char*)' conflicts with a previous declaration
   69 |   int strcmp(const char* s1, const char* s2);
      |                                            ^
/usr/include/string.h:137:12: note: previous declaration 'int strcmp(const char*, const char*)'
  137 | extern int strcmp (const char *__s1, const char *__s2)
      |            ^~~~~~
p836.cpp:70:45: error: 'int std::strcoll(const char*, const char*)' conflicts with a previous declaration
   70 |   int strcoll(const char* s1, const char* s2);
      |                                             ^
/usr/include/string.h:144:12: note: previous declaration 'int strcoll(const char*, const char*)'
  144 | extern int strcoll (const char *__s1, const char *__s2)
      |            ^~~~~~~
p836.cpp:71:55: error: 'int std::strncmp(const char*, const char*, size_t)' conflicts with a previous declaration
   71 |   int strncmp(const char* s1, const char* s2, size_t n);
      |                                                       ^
/usr/include/string.h:140:12: note: previous declaration 'int strncmp(const char*, const char*, size_t)'
  140 | extern int strncmp (const char *__s1, const char *__s2, size_t __n)
      |            ^~~~~~~
p836.cpp:72:52: error: 'std::size_t std::strxfrm(char*, const char*, size_t)' conflicts with a previous declaration
   72 |   size_t strxfrm(char* s1, const char* s2, size_t n);
      |                                                    ^
/usr/include/string.h:147:15: note: previous declaration 'size_t strxfrm(char*, const char*, size_t)'
  147 | extern size_t strxfrm (char *__restrict __dest,
      |               ^~~~~~~
p836.cpp:73:52: error: 'const void* std::memchr(const void*, int, size_t)' conflicts with a previous declaration
   73 |   const void* memchr(const void* s, int c, size_t n);
      |                                                    ^
/usr/include/string.h:73:20: note: previous declaration 'const void* memchr(const void*, int, size_t)'
   73 | extern const void *memchr (const void *__s, int __c, size_t __n)
      |                    ^~~~~~
p836.cpp:74:40: error: 'void* std::memchr(void*, int, size_t)' conflicts with a previous declaration
   74 |   void* memchr(void* s, int c, size_t n);
      |                                        ^
/usr/include/string.h:71:14: note: previous declaration 'void* memchr(void*, int, size_t)'
   71 | extern void *memchr (void *__s, int __c, size_t __n)
      |              ^~~~~~
p836.cpp:75:42: error: 'const char* std::strchr(const char*, int)' conflicts with a previous declaration
   75 |   const char* strchr(const char* s, int c);
      |                                          ^
/usr/include/string.h:208:20: note: previous declaration 'const char* strchr(const char*, int)'
  208 | extern const char *strchr (const char *__s, int __c)
      |                    ^~~~~~
p836.cpp:76:30: error: 'char* std::strchr(char*, int)' conflicts with a previous declaration
   76 |   char* strchr(char* s, int c);
      |                              ^
/usr/include/string.h:206:14: note: previous declaration 'char* strchr(char*, int)'
  206 | extern char *strchr (char *__s, int __c)
      |              ^~~~~~
p836.cpp:77:48: error: 'std::size_t std::strcspn(const char*, const char*)' conflicts with a previous declaration
   77 |   size_t strcspn(const char* s1, const char* s2);
      |                                                ^
/usr/include/string.h:273:15: note: previous declaration 'size_t strcspn(const char*, const char*)'
  273 | extern size_t strcspn (const char *__s, const char *__reject)
      |               ^~~~~~~
p836.cpp:78:53: error: 'const char* std::strpbrk(const char*, const char*)' conflicts with a previous declaration
   78 |   const char* strpbrk(const char* s1, const char* s2);
      |                                                     ^
/usr/include/string.h:285:20: note: previous declaration 'const char* strpbrk(const char*, const char*)'
  285 | extern const char *strpbrk (const char *__s, const char *__accept)
      |                    ^~~~~~~
p836.cpp:79:41: error: 'char* std::strpbrk(char*, const char*)' conflicts with a previous declaration
   79 |   char* strpbrk(char* s1, const char* s2);
      |                                         ^
/usr/include/string.h:283:14: note: previous declaration 'char* strpbrk(char*, const char*)'
  283 | extern char *strpbrk (char *__s, const char *__accept)
      |              ^~~~~~~
p836.cpp:80:43: error: 'const char* std::strrchr(const char*, int)' conflicts with a previous declaration
   80 |   const char* strrchr(const char* s, int c);
      |                                           ^
/usr/include/string.h:235:20: note: previous declaration 'const char* strrchr(const char*, int)'
  235 | extern const char *strrchr (const char *__s, int __c)
      |                    ^~~~~~~
p836.cpp:81:31: error: 'char* std::strrchr(char*, int)' conflicts with a previous declaration
   81 |   char* strrchr(char* s, int c);
      |                               ^
/usr/include/string.h:233:14: note: previous declaration 'char* strrchr(char*, int)'
  233 | extern char *strrchr (char *__s, int __c)
      |              ^~~~~~~
p836.cpp:82:47: error: 'std::size_t std::strspn(const char*, const char*)' conflicts with a previous declaration
   82 |   size_t strspn(const char* s1, const char* s2);
      |                                               ^
/usr/include/string.h:277:15: note: previous declaration 'size_t strspn(const char*, const char*)'
  277 | extern size_t strspn (const char *__s, const char *__accept)
      |               ^~~~~~
p836.cpp:83:52: error: 'const char* std::strstr(const char*, const char*)' conflicts with a previous declaration
   83 |   const char* strstr(const char* s1, const char* s2);
      |                                                    ^
/usr/include/string.h:312:20: note: previous declaration 'const char* strstr(const char*, const char*)'
  312 | extern const char *strstr (const char *__haystack, const char *__needle)
      |                    ^~~~~~
p836.cpp:84:40: error: 'char* std::strstr(char*, const char*)' conflicts with a previous declaration
   84 |   char* strstr(char* s1, const char* s2);
      |                                        ^
/usr/include/string.h:310:14: note: previous declaration 'char* strstr(char*, const char*)'
  310 | extern char *strstr (char *__haystack, const char *__needle)
      |              ^~~~~~
p836.cpp:85:40: error: 'char* std::strtok(char*, const char*)' conflicts with a previous declaration
   85 |   char* strtok(char* s1, const char* s2);
      |                                        ^
/usr/include/string.h:336:14: note: previous declaration 'char* strtok(char*, const char*)'
  336 | extern char *strtok (char *__restrict __s, const char *__restrict __delim)
      |              ^~~~~~
p836.cpp:86:40: error: 'void* std::memset(void*, int, size_t)' conflicts with a previous declaration
   86 |   void* memset(void* s, int c, size_t n);
      |                                        ^
/usr/include/string.h:61:14: note: previous declaration 'void* memset(void*, int, size_t)'
   61 | extern void *memset (void *__s, int __c, size_t __n) __THROW __nonnull ((1));
      |              ^~~~~~
p836.cpp:87:28: error: 'char* std::strerror(int)' conflicts with a previous declaration
   87 |   char* strerror(int errnum);
      |                            ^
/usr/include/string.h:397:14: note: previous declaration 'char* strerror(int)'
  397 | extern char *strerror (int __errnum) __THROW;
      |              ^~~~~~~~
p836.cpp:88:30: error: 'std::size_t std::strlen(const char*)' conflicts with a previous declaration
   88 |   size_t strlen(const char* s);
      |                              ^
/usr/include/string.h:385:15: note: previous declaration 'size_t strlen(const char*)'
  385 | extern size_t strlen (const char *__s)
      |               ^~~~~~
p836.cpp:100:16: error: 'see_17' does not name a type
  100 | using size_t = see_17.2.4;
      |                ^~~~~~
p836.cpp:101:19: error: 'see_below' does not name a type
  101 | using mbstate_t = see_below;
      |                   ^~~~~~~~~
p836.cpp:102:16: error: 'see_below' does not name a type
  102 | using wint_t = see_below;
      |                ^~~~~~~~~
p836.cpp:104:61: error: 'int std::fwprintf(FILE*, const wchar_t*, ...)' conflicts with a previous declaration
  104 |        int fwprintf(FILE* stream, const wchar_t* format, ...);
      |                                                             ^
/usr/include/wchar.h:580:12: note: previous declaration 'int fwprintf(__FILE*, const wchar_t*, ...)'
  580 | extern int fwprintf (__FILE *__restrict __stream,
      |            ^~~~~~~~
p836.cpp:105:60: error: 'int std::fwscanf(FILE*, const wchar_t*, ...)' conflicts with a previous declaration
  105 |        int fwscanf(FILE* stream, const wchar_t* format, ...);
      |                                                            ^
In file included from /usr/include/features.h:461,
                 from /usr/local/include/c++/12.1.0/x86_64-linux-gnu/bits/os_defines.h:39,
                 from /usr/local/include/c++/12.1.0/x86_64-linux-gnu/bits/c++config.h:655,
                 from /usr/local/include/c++/12.1.0/cstddef:49,
                 from N4910.h:1:
/usr/include/wchar.h:640:12: note: previous declaration 'int fwscanf(__FILE*, const wchar_t*, ...)'
  640 | extern int __REDIRECT (fwscanf, (__FILE *__restrict __stream,
      |            ^~~~~~~~~~
p836.cpp:106:69: error: 'int std::swprintf(wchar_t*, size_t, const wchar_t*, ...)' conflicts with a previous declaration
  106 |        int swprintf(wchar_t* s, size_t n, const wchar_t* format, ...);
      |                                                                     ^
/usr/include/wchar.h:590:12: note: previous declaration 'int swprintf(wchar_t*, size_t, const wchar_t*, ...)'
  590 | extern int swprintf (wchar_t *__restrict __s, size_t __n,
      |            ^~~~~~~~
p836.cpp:107:64: error: 'int std::swscanf(const wchar_t*, const wchar_t*, ...)' conflicts with a previous declaration
  107 |        int swscanf(const wchar_t* s, const wchar_t* format, ...);
      |                                                                ^
/usr/include/wchar.h:647:12: note: previous declaration 'int swscanf(const wchar_t*, const wchar_t*, ...)'
  647 | extern int __REDIRECT_NTH (swscanf, (const wchar_t *__restrict __s,
      |            ^~~~~~~~~~~~~~
p836.cpp:108:70: error: 'int std::vfwprintf(FILE*, const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  108 |        int vfwprintf(FILE* stream, const wchar_t* format, va_list arg);
      |                                                                      ^
/usr/include/wchar.h:598:12: note: previous declaration 'int vfwprintf(__FILE*, const wchar_t*, __va_list_tag*)'
  598 | extern int vfwprintf (__FILE *__restrict __s,
      |            ^~~~~~~~~
p836.cpp:109:69: error: 'int std::vfwscanf(FILE*, const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  109 |        int vfwscanf(FILE* stream, const wchar_t* format, va_list arg);
      |                                                                     ^
/usr/include/wchar.h:693:12: note: previous declaration 'int vfwscanf(__FILE*, const wchar_t*, __va_list_tag*'
  693 | extern int __REDIRECT (vfwscanf, (__FILE *__restrict __s,
      |            ^~~~~~~~~~
p836.cpp:110:78: error: 'int std::vswprintf(wchar_t*, size_t, const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  110 |        int vswprintf(wchar_t* s, size_t n, const wchar_t* format, va_list arg);
      |                                                                              ^
/usr/include/wchar.h:611:12: note: previous declaration 'int vswprintf(wchar_t*, size_t, const wchar_t*, __va_list_tag*)'
  611 | extern int vswprintf (wchar_t *__restrict __s, size_t __n,
      |            ^~~~~~~~~
p836.cpp:111:73: error: 'int std::vswscanf(const wchar_t*, const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  111 |        int vswscanf(const wchar_t* s, const wchar_t* format, va_list arg);
      |                                                                         ^
/usr/include/wchar.h:700:12: note: previous declaration 'int vswscanf(const wchar_t*, const wchar_t*, __va_list_tag*)'
  700 | extern int __REDIRECT_NTH (vswscanf, (const wchar_t *__restrict __s,
      |            ^~~~~~~~~~~~~~
p836.cpp:112:55: error: 'int std::vwprintf(const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  112 |        int vwprintf(const wchar_t* format, va_list arg);
      |                                                       ^
/usr/include/wchar.h:606:12: note: previous declaration 'int vwprintf(const wchar_t*, __va_list_tag*)'
  606 | extern int vwprintf (const wchar_t *__restrict __format,
      |            ^~~~~~~~
p836.cpp:113:54: error: 'int std::vwscanf(const wchar_t*, __va_list_tag*)' conflicts with a previous declaration
  113 |        int vwscanf(const wchar_t* format, va_list arg);
      |                                                      ^
/usr/include/wchar.h:697:12: note: previous declaration 'int vwscanf(const wchar_t*, __va_list_tag*)'
  697 | extern int __REDIRECT (vwscanf, (const wchar_t *__restrict __format,
      |            ^~~~~~~~~~
p836.cpp:114:46: error: 'int std::wprintf(const wchar_t*, ...)' conflicts with a previous declaration
  114 |        int wprintf(const wchar_t* format, ...);
      |                                              ^
/usr/include/wchar.h:587:12: note: previous declaration 'int wprintf(const wchar_t*, ...)'
  587 | extern int wprintf (const wchar_t *__restrict __format, ...)
      |            ^~~~~~~
p836.cpp:115:45: error: 'int std::wscanf(const wchar_t*, ...)' conflicts with a previous declaration
  115 |        int wscanf(const wchar_t* format, ...);
      |                                             ^
/usr/include/wchar.h:644:12: note: previous declaration 'int wscanf(const wchar_t*, ...)'
  644 | extern int __REDIRECT (wscanf, (const wchar_t *__restrict __format, ...),
      |            ^~~~~~~~~~
p836.cpp:116:34: error: 'wint_t std::fgetwc(FILE*)' conflicts with a previous declaration
  116 |        wint_t fgetwc(FILE* stream);
      |                                  ^
/usr/include/wchar.h:726:15: note: previous declaration 'wint_t fgetwc(__FILE*)'
  726 | extern wint_t fgetwc (__FILE *__stream);
      |               ^~~~~~
p836.cpp:117:55: error: 'wchar_t* std::fgetws(wchar_t*, int, FILE*)' conflicts with a previous declaration
  117 |        wchar_t* fgetws(wchar_t* s, int n, FILE* stream);
      |                                                       ^
/usr/include/wchar.h:755:17: note: previous declaration 'wchar_t* fgetws(wchar_t*, int, __FILE*)'
  755 | extern wchar_t *fgetws (wchar_t *__restrict __ws, int __n,
      |                 ^~~~~~
p836.cpp:118:45: error: 'wint_t std::fputwc(wchar_t, FILE*)' conflicts with a previous declaration
  118 |        wint_t fputwc(wchar_t c, FILE* stream);
      |                                             ^
/usr/include/wchar.h:740:15: note: previous declaration 'wint_t fputwc(wchar_t, __FILE*)'
  740 | extern wint_t fputwc (wchar_t __wc, __FILE *__stream);
      |               ^~~~~~
p836.cpp:119:42: error: 'int std::fputws(const wchar_t*, FILE*)' conflicts with a previous declaration
  119 | int fputws(const wchar_t* s, FILE* stream);
      |                                          ^
/usr/include/wchar.h:762:12: note: previous declaration 'int fputws(const wchar_t*, __FILE*)'
  762 | extern int fputws (const wchar_t *__restrict __ws,
      |            ^~~~~~
p836.cpp:120:33: error: 'int std::fwide(FILE*, int)' conflicts with a previous declaration
  120 | int fwide(FILE* stream, int mode);
      |                                 ^
/usr/include/wchar.h:573:12: note: previous declaration 'int fwide(__FILE*, int)'
  573 | extern int fwide (__FILE *__fp, int __mode) __THROW;
      |            ^~~~~
p836.cpp:121:26: error: 'wint_t std::getwc(FILE*)' conflicts with a previous declaration
  121 | wint_t getwc(FILE* stream);
      |                          ^
/usr/include/wchar.h:727:15: note: previous declaration 'wint_t getwc(__FILE*)'
  727 | extern wint_t getwc (__FILE *__stream);
      |               ^~~~~
p836.cpp:122:17: error: 'wint_t std::getwchar()' conflicts with a previous declaration
  122 | wint_t getwchar();
      |                 ^
/usr/include/wchar.h:733:15: note: previous declaration 'wint_t getwchar()'
  733 | extern wint_t getwchar (void);
      |               ^~~~~~~~
p836.cpp:123:37: error: 'wint_t std::putwc(wchar_t, FILE*)' conflicts with a previous declaration
  123 | wint_t putwc(wchar_t c, FILE* stream);
      |                                     ^
/usr/include/wchar.h:741:15: note: previous declaration 'wint_t putwc(wchar_t, __FILE*)'
  741 | extern wint_t putwc (wchar_t __wc, __FILE *__stream);
      |               ^~~~~
p836.cpp:124:26: error: 'wint_t std::putwchar(wchar_t)' conflicts with a previous declaration
  124 | wint_t putwchar(wchar_t c);
      |                          ^
/usr/include/wchar.h:747:15: note: previous declaration 'wint_t putwchar(wchar_t)'
  747 | extern wint_t putwchar (wchar_t __wc);
      |               ^~~~~~~~
p836.cpp:125:38: error: 'wint_t std::ungetwc(wint_t, FILE*)' conflicts with a previous declaration
  125 | wint_t ungetwc(wint_t c, FILE* stream);
      |                                      ^
/usr/include/wchar.h:770:15: note: previous declaration 'wint_t ungetwc(wint_t, __FILE*)'
  770 | extern wint_t ungetwc (wint_t __wc, __FILE *__stream);
      |               ^~~~~~~
p836.cpp:126:52: error: 'double std::wcstod(const wchar_t*, wchar_t**)' conflicts with a previous declaration
  126 | double wcstod(const wchar_t* nptr, wchar_t** endptr);
      |                                                    ^
/usr/include/wchar.h:377:15: note: previous declaration 'double wcstod(const wchar_t*, wchar_t**)'
  377 | extern double wcstod (const wchar_t *__restrict __nptr,
      |               ^~~~~~
p836.cpp:127:51: error: 'float std::wcstof(const wchar_t*, wchar_t**)' conflicts with a previous declaration
  127 | float wcstof(const wchar_t* nptr, wchar_t** endptr);
      |                                                   ^
/usr/include/wchar.h:382:14: note: previous declaration 'float wcstof(const wchar_t*, wchar_t**)'
  382 | extern float wcstof (const wchar_t *__restrict __nptr,
      |              ^~~~~~
p836.cpp:128:58: error: 'long double std::wcstold(const wchar_t*, wchar_t**)' conflicts with a previous declaration
  128 | long double wcstold(const wchar_t* nptr, wchar_t** endptr);
      |                                                          ^
/usr/include/wchar.h:384:20: note: previous declaration 'long double wcstold(const wchar_t*, wchar_t**)'
  384 | extern long double wcstold (const wchar_t *__restrict __nptr,
      |                    ^~~~~~~
p836.cpp:129:64: error: 'long int std::wcstol(const wchar_t*, wchar_t**, int)' conflicts with a previous declaration
  129 | long int wcstol(const wchar_t* nptr, wchar_t** endptr, int base);
      |                                                                ^
/usr/include/wchar.h:428:17: note: previous declaration 'long int wcstol(const wchar_t*, wchar_t**, int)'
  428 | extern long int wcstol (const wchar_t *__restrict __nptr,
      |                 ^~~~~~
p836.cpp:130:70: error: 'long long int std::wcstoll(const wchar_t*, wchar_t**, int)' conflicts with a previous declaration
  130 | long long int wcstoll(const wchar_t* nptr, wchar_t** endptr, int base);
      |                                                                      ^
/usr/include/wchar.h:441:22: note: previous declaration 'long long int wcstoll(const wchar_t*, wchar_t**, int'
  441 | extern long long int wcstoll (const wchar_t *__restrict __nptr,
      |                      ^~~~~~~
p836.cpp:131:74: error: 'long unsigned int std::wcstoul(const wchar_t*, wchar_t**, int)' conflicts with a previous declaration
  131 | unsigned long int wcstoul(const wchar_t* nptr, wchar_t** endptr, int base);
      |                                                                          ^
/usr/include/wchar.h:433:26: note: previous declaration 'long unsigned int wcstoul(const wchar_t*, wchar_t**, int)'
  433 | extern unsigned long int wcstoul (const wchar_t *__restrict __nptr,
      |                          ^~~~~~~
p836.cpp:132:80: error: 'long long unsigned int std::wcstoull(const wchar_t*, wchar_t**, int)' conflicts with a previous declaration
  132 | unsigned long long int wcstoull(const wchar_t* nptr, wchar_t** endptr, int base);
      |                                                                                ^
/usr/include/wchar.h:448:31: note: previous declaration 'long long unsigned int wcstoull(const wchar_t*, wchar_t**, int)'
  448 | extern unsigned long long int wcstoull (const wchar_t *__restrict __nptr,
      |                               ^~~~~~~~
p836.cpp:133:47: error: 'wchar_t* std::wcscpy(wchar_t*, const wchar_t*)' conflicts with a previous declaration
  133 | wchar_t* wcscpy(wchar_t* s1, const wchar_t* s2);
      |                                               ^
/usr/include/wchar.h:87:17: note: previous declaration 'wchar_t* wcscpy(wchar_t*, const wchar_t*)'
   87 | extern wchar_t *wcscpy (wchar_t *__restrict __dest,
      |                 ^~~~~~
p836.cpp:134:58: error: 'wchar_t* std::wcsncpy(wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  134 | wchar_t* wcsncpy(wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                          ^
/usr/include/wchar.h:92:17: note: previous declaration 'wchar_t* wcsncpy(wchar_t*, const wchar_t*, size_t)'
   92 | extern wchar_t *wcsncpy (wchar_t *__restrict __dest,
      |                 ^~~~~~~
p836.cpp:135:58: error: 'wchar_t* std::wmemcpy(wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  135 | wchar_t* wmemcpy(wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                          ^
/usr/include/wchar.h:262:17: note: previous declaration 'wchar_t* wmemcpy(wchar_t*, const wchar_t*, size_t)'
  262 | extern wchar_t *wmemcpy (wchar_t *__restrict __s1,
      |                 ^~~~~~~
p836.cpp:136:59: error: 'wchar_t* std::wmemmove(wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  136 | wchar_t* wmemmove(wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                           ^
/usr/include/wchar.h:267:17: note: previous declaration 'wchar_t* wmemmove(wchar_t*, const wchar_t*, size_t)'
  267 | extern wchar_t *wmemmove (wchar_t *__s1, const wchar_t *__s2, size_t __n)
      |                 ^~~~~~~~
p836.cpp:137:47: error: 'wchar_t* std::wcscat(wchar_t*, const wchar_t*)' conflicts with a previous declaration
  137 | wchar_t* wcscat(wchar_t* s1, const wchar_t* s2);
      |                                               ^
/usr/include/wchar.h:97:17: note: previous declaration 'wchar_t* wcscat(wchar_t*, const wchar_t*)'
   97 | extern wchar_t *wcscat (wchar_t *__restrict __dest,
      |                 ^~~~~~
p836.cpp:138:58: error: 'wchar_t* std::wcsncat(wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  138 | wchar_t* wcsncat(wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                          ^
/usr/include/wchar.h:101:17: note: previous declaration 'wchar_t* wcsncat(wchar_t*, const wchar_t*, size_t)'
  101 | extern wchar_t *wcsncat (wchar_t *__restrict __dest,
      |                 ^~~~~~~
p836.cpp:139:48: error: 'int std::wcscmp(const wchar_t*, const wchar_t*)' conflicts with a previous declaration
  139 | int wcscmp(const wchar_t* s1, const wchar_t* s2);
      |                                                ^
/usr/include/wchar.h:106:12: note: previous declaration 'int wcscmp(const wchar_t*, const wchar_t*)'
  106 | extern int wcscmp (const wchar_t *__s1, const wchar_t *__s2)
      |            ^~~~~~
p836.cpp:140:49: error: 'int std::wcscoll(const wchar_t*, const wchar_t*)' conflicts with a previous declaration
  140 | int wcscoll(const wchar_t* s1, const wchar_t* s2);
      |                                                 ^
/usr/include/wchar.h:131:12: note: previous declaration 'int wcscoll(const wchar_t*, const wchar_t*)'
  131 | extern int wcscoll (const wchar_t *__s1, const wchar_t *__s2) __THROW;
      |            ^~~~~~~
p836.cpp:141:59: error: 'int std::wcsncmp(const wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  141 | int wcsncmp(const wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                           ^
/usr/include/wchar.h:109:12: note: previous declaration 'int wcsncmp(const wchar_t*, const wchar_t*, size_t)'
  109 | extern int wcsncmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
      |            ^~~~~~~
p836.cpp:142:56: error: 'std::size_t std::wcsxfrm(wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  142 | size_t wcsxfrm(wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                        ^
/usr/include/wchar.h:135:15: note: previous declaration 'size_t wcsxfrm(wchar_t*, const wchar_t*, size_t)'
  135 | extern size_t wcsxfrm (wchar_t *__restrict __s1,
      |               ^~~~~~~
p836.cpp:143:59: error: 'int std::wmemcmp(const wchar_t*, const wchar_t*, size_t)' conflicts with a previous declaration
  143 | int wmemcmp(const wchar_t* s1, const wchar_t* s2, size_t n);
      |                                                           ^
/usr/include/wchar.h:258:12: note: previous declaration 'int wmemcmp(const wchar_t*, const wchar_t*, size_t)'
  258 | extern int wmemcmp (const wchar_t *__s1, const wchar_t *__s2, size_t __n)
      |            ^~~~~~~
p836.cpp:144:50: error: 'const wchar_t* std::wcschr(const wchar_t*, wchar_t)' conflicts with a previous declaration
  144 | const wchar_t* wcschr(const wchar_t* s, wchar_t c);
      |                                                  ^
/usr/include/wchar.h:161:29: note: previous declaration 'const wchar_t* wcschr(const wchar_t*, wchar_t)'
  161 | extern "C++" const wchar_t *wcschr (const wchar_t *__wcs, wchar_t __wc)
      |                             ^~~~~~
p836.cpp:148:32: error: 'int std::mbsinit(const mbstate_t*)' conflicts with a previous declaration
  148 | int mbsinit(const mbstate_t* ps);
      |                                ^
/usr/include/wchar.h:292:12: note: previous declaration 'int mbsinit(const mbstate_t*)'
  292 | extern int mbsinit (const mbstate_t *__ps) __THROW __attribute_pure__;
      |            ^~~~~~~
p836.cpp:149:53: error: 'std::size_t std::mbrlen(const char*, size_t, mbstate_t*)' conflicts with a previous declaration
  149 | size_t mbrlen(const char* s, size_t n, mbstate_t* ps);
      |                                                     ^
/usr/include/wchar.h:307:15: note: previous declaration 'size_t mbrlen(const char*, size_t, mbstate_t*)'
  307 | extern size_t mbrlen (const char *__restrict __s, size_t __n,
      |               ^~~~~~
p836.cpp:150:68: error: 'std::size_t std::mbrtowc(wchar_t*, const char*, size_t, mbstate_t*)' conflicts with a previous declaration
  150 | size_t mbrtowc(wchar_t* pwc, const char* s, size_t n, mbstate_t* ps); size_t wcrtomb(char* s, wchar_t wc, mbstate_t* ps);
      |                                                                    ^
/usr/include/wchar.h:296:15: note: previous declaration 'size_t mbrtowc(wchar_t*, const char*, size_t, mbstate_t*)'
  296 | extern size_t mbrtowc (wchar_t *__restrict __pwc,
      |               ^~~~~~~
p836.cpp:150:120: error: 'std::size_t std::wcrtomb(char*, wchar_t, mbstate_t*)' conflicts with a previous declaration
  150 | _t* pwc, const char* s, size_t n, mbstate_t* ps); size_t wcrtomb(char* s, wchar_t wc, mbstate_t* ps);
      |                                                                                                    ^

/usr/include/wchar.h:301:15: note: previous declaration 'size_t wcrtomb(char*, wchar_t, mbstate_t*)'
  301 | extern size_t wcrtomb (char *__restrict __s, wchar_t __wc,
      |               ^~~~~~~
p836.cpp:151:82: error: 'std::size_t std::mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*)' conflicts with a previous declaration
  151 |        size_t mbsrtowcs(wchar_t* dst, const char** src, size_t len, mbstate_t* ps);
      |                                                                                  ^
/usr/include/wchar.h:337:15: note: previous declaration 'size_t mbsrtowcs(wchar_t*, const char**, size_t, mbstate_t*)'
  337 | extern size_t mbsrtowcs (wchar_t *__restrict __dst,
      |               ^~~~~~~~~
p836.cpp:152:82: error: 'std::size_t std::wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*)' conflicts with a previous declaration
  152 |        size_t wcsrtombs(char* dst, const wchar_t** src, size_t len, mbstate_t* ps);
      |                                                                                  ^
/usr/include/wchar.h:343:15: note: previous declaration 'size_t wcsrtombs(char*, const wchar_t**, size_t, mbstate_t*)'
  343 | extern size_t wcsrtombs (char *__restrict __dst,
      |               ^~~~~~~~~
p836.cpp:174:74: error: reference to 'tm' is ambiguous
  174 | size_t wcsftime(wchar_t* s, size_t maxsize, const wchar_t* format, const tm* timeptr); wint_t btowc(int c);
      |                                                                          ^~
p836.cpp:103:8: note: candidates are: 'struct std::tm'
  103 | struct tm;
      |        ^~
In file included from /usr/include/time.h:39,
                 from /usr/include/pthread.h:23,
                 from /usr/local/include/c++/12.1.0/x86_64-linux-gnu/bits/gthr-default.h:35,
                 from /usr/local/include/c++/12.1.0/x86_64-linux-gnu/bits/gthr.h:148,
                 from /usr/local/include/c++/12.1.0/ext/atomicity.h:35,
                 from /usr/local/include/c++/12.1.0/bits/ios_base.h:39,
                 from /usr/local/include/c++/12.1.0/ios:42:
/usr/include/x86_64-linux-gnu/bits/types/struct_tm.h:7:8: note:                 'struct tm'
    7 | struct tm
      |        ^~
p836.cpp:180:19: error: 'see_below' does not name a type
  180 | using mbstate_t = see_below; using size_t = see_17.2.4;
      |                   ^~~~~~~~~
p836.cpp:180:45: error: 'see_17' does not name a type
  180 | using mbstate_t = see_below; using size_t = see_17.2.4;
      |                                             ^~~~~~

```

## 検討事項(agenda)
コンパイルエラーを取るか、コンパイルエラーの理由を解説する。

<!-- リンクエラーの解説をする。clang++とg++の比較。意味のある出力。
コンパイルエラーを取るか、コンパイルエラーの理由を解説する。-->

# 参考資料(reference)


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

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

https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a

#include "N4910.h"

https://qiita.com/kaizen_nagoya/items/163a47cef7d6bb1c33a8

C++N4910資料の改善点

https://qiita.com/kaizen_nagoya/items/fb4ceb5d117a54641af3

dockerにclang

https://qiita.com/kaizen_nagoya/items/8829ffeee397eda50e80

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

https://qiita.com/drafts/059874ea39c4de64c0f7

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

https://qiita.com/kaizen_nagoya/items/74220c0577a512c2d7da


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

https://qiita.com/kaizen_nagoya/items/a63fb96d351ac5c16ff7

astyle 使ってみた

https://qiita.com/kaizen_nagoya/items/3c9a87a781d53a1a23f3

DoCAP（ドゥーキャップ）って何ですか？

https://qiita.com/kaizen_nagoya/items/47e0e6509ab792c43327

小川メソッド　覚え（書きかけ）

https://qiita.com/kaizen_nagoya/items/3593d72eca551742df68

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

# 文書履歴(document history)
ver. 0.01 初稿 　20220804