はじめに(Introduction)
N4910 Working Draft, Standard for Programming Language C++
n4910は、ISO/IEC JTC1 SC22 WG21の作業原案(Working Draft)です。
公式のISO/IEC 14882原本ではありません。
ISO/IEC JTC1 SC22 WG21では、可能な限り作業文書を公開し、幅広い意見を求めています。
一連の記事はコード断片をコンパイルできる形にする方法を検討してコンパイル、リンク、実行して、規格案の原文と処理系(g++, Clang++)との違いを確認し、技術内容を検討し、ISO/IEC JTC1 SC22 WG21にフィードバックするために用います。
また、CERT C++, MISRA C++等のコーディング標準のコード断片をコンパイルする際の参考にさせていただこうと考えています。CERT C++, MISRA C++が標準化の動きとの時間的なずれがあれば確認できれば幸いです。また、boostライブラリとの関連、Linux OS, TOPPERSカーネル、g++(GCC), clang++(LLVM)との関係も調査中です。
何か、抜け漏れ、耳より情報がありましたらおしらせくださると幸いです。
<この項は書きかけです。順次追記します。>
背景(back ground)
C/C++でコンパイルエラーが出ると、途方にくれることがしばしばあります。
何回かに1回は、該当するエラーが検索できます。
ただ、条件が違っていて、そこでの修正方法では目的を達成しないこともしばしばです。いろいろな条件のコンパイルエラーとその対応方法について、広く記録することによって、いつか同じエラーに遭遇した時にやくに立つことを目指しています。
この半年の間で、三度、自分のネットでの記録に助けられたことがあります。
また過去に解決できなかった記録を10種類以上、最近になって解決できたことがあります。それは、主に次の3つの情報に基づいています。
cpprefjp - C++日本語リファレンス
コンパイラの実装状況
また
https://researchmap.jp/joub9b3my-1797580/#_1797580
に記載したサイトのお世話になっています。
作業方針(sequence)
Clang++では-std=c++03, C++2bの2種類
g++では-std=c++03, c++2bの2種類
でコンパイルし、
1)コンパイルエラーを収集する。
2)コンパイルエラーをなくす方法を検討する。
コンパイルエラーになる例を示すだけが目的のコードは、コンパイルエラーをなくすのではなく、コンパイルエラーの種類を収集するだけにする。
文法を示すのが目的のコード場合に、コンパイルエラーをなくすのに手間がかかる場合は、順次作業します。
3)リンクエラーをなくす方法を検討する。
文法を示すのが目的のコード場合に、リンクエラーをなくすのに手間がかかる場合は、順次作業します。
4)意味のある出力を作る。
コンパイル、リンクが通っても、意味のある出力を示そうとすると、コンパイル・リンクエラーが出て収拾できそうにない場合がある。順次作業します。
1)だけのものから4)まで進んだものと色々ある状態です。一歩でも前に進むご助言をお待ちしています。「検討事項」の欄に現状を記録するようにしています。
C++N4910:2022 Standard Working Draft on ISO/IEC 14882(0) sample code compile list
C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list
C++N4606, 2016符号断片編纂一覧(example code compile list)
C++N4606, 2016 Working Draft 2016, ISO/IEC 14882, C++ standard(1) Example code compile list
https://qiita.com/kaizen_nagoya/items/df5d62c35bd6ed1c3d43/
C++N3242, 2011 sample code compile list on clang++ and g++
編纂器(Compiler)
clang++ --version
Debian clang version 14.0.5-++20220610033153+c12386ae247c-1~exp1~20220610153237.151
Target: x86_64-pc-linux-gnu, Thread model: posix, InstalledDir: /usr/bin
g++- --version
g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
23.5 Null-terminated sequence utilities [c.strings] C++N4910:2022 (637) p836.cpp
算譜(source code)
// C++N4910 Committee Draft, Standard for Programming Language C++
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4910.pdf
const char * n4910 = "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)
$ 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)
コンパイルエラーを取るか、コンパイルエラーの理由を解説する。
参考資料(reference)
関連する自己参照以外は、こちらの先頭に移転。
C言語(C++)に対する誤解、曲解、無理解、爽快。
#include "N4910.h"
C++N4910資料の改善点
dockerにclang
docker gnu(gcc/g++) and llvm(clang/clang++)
コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)
C++N4910:2022 tag follower 300人超えました。ありがとうございます。
astyle 使ってみた
DoCAP(ドゥーキャップ)って何ですか?
小川メソッド 覚え(書きかけ)
<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
文書履歴(document history)
ver. 0.01 初稿 20220804