The C++ Standard Library - A Tutorial and Reference, 2nd Edition by Nicolai M. Josuttis
http://cppstdlib.com
The C++ Standard Library: clang++とg++でコンパイルしてみた(まとめ)
https://qiita.com/kaizen_nagoya/items/9bdfaa392443d13e5759
目的(purpose)
The C++ Standard Libraryコンパイル記録は、コンパイラおよび対応標準、コンパイラの版により、コンパイルエラーMessageの違いを記録し、どのエラーが出たら、どの版またはどの対応標準にすればエラーが少なくなるかを考察するための資料の第一歩です。
成果(outcome)
(1)コンパイラの種類、対応標準の違いによってエラーの数が違う。
(2)同じエラーであってもMessageの表現が違う。
(3) Error Messageのネットで検索する際に役立つ。
編纂器(compiler)
clang++
clang version 6.0.0 (tags/RELEASE_600/final)
Target: x86_64-apple-darwin17.5.0
Thread model: posix
InstalledDir: /usr/local/opt/llvm/bin
g++
g++ (Homebrew GCC 8.1.0) 8.1.0
Copyright (C) 2018 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.
#編纂実行(compile and go)
##io
clang++ ./io/cat1.cpp -std=c++2a -Wall
g++ ./io/cat1.cpp -std=c++2a -Wall
clang++ ./io/cat2.cpp -std=c++2a -Wall
g++ ./io/cat2.cpp -std=c++2a -Wall
clang++ ./io/charcat1.cpp -std=c++2a -Wall
g++ ./io/charcat1.cpp -std=c++2a -Wall
clang++ charcat1.cpp -std=c++2a -Wall
g++ charcat1.cpp -std=c++2a -Wall
clang++ charcat2.cpp -std=c++2a -Wall
g++ charcat2.cpp -std=c++2a -Wall
clang++ copy1.cpp -std=c++2a -Wall
copy2.cpp
g++ copy1.cpp -std=c++2a -Wall
clang++ copy2.cpp -std=c++2a -Wall
g++ copy2.cpp -std=c++2a -Wall
clang++ countlines1.cpp -std=c++2a -Wall
20
g++ countlines1.cpp -std=c++2a -Wall
0
clang++ fstream1.cpp -std=c++2a -Wall
value: 32 char:
value: 33 char: !
value: 34 char: "
value: 35 char: #
value: 36 char: $
value: 37 char: %
value: 38 char: &
value: 39 char: '
value: 40 char: (
value: 41 char: )
value: 42 char: *
value: 43 char: +
value: 44 char: ,
value: 45 char: -
value: 46 char: .
value: 47 char: /
value: 48 char: 0
value: 49 char: 1
value: 50 char: 2
value: 51 char: 3
value: 52 char: 4
value: 53 char: 5
value: 54 char: 6
value: 55 char: 7
value: 56 char: 8
value: 57 char: 9
value: 58 char: :
value: 59 char: ;
value: 60 char: <
value: 61 char: =
value: 62 char: >
value: 63 char: ?
value: 64 char: @
value: 65 char: A
value: 66 char: B
value: 67 char: C
value: 68 char: D
value: 69 char: E
value: 70 char: F
value: 71 char: G
value: 72 char: H
value: 73 char: I
value: 74 char: J
value: 75 char: K
value: 76 char: L
value: 77 char: M
value: 78 char: N
value: 79 char: O
value: 80 char: P
value: 81 char: Q
value: 82 char: R
value: 83 char: S
value: 84 char: T
value: 85 char: U
value: 86 char: V
value: 87 char: W
value: 88 char: X
value: 89 char: Y
value: 90 char: Z
value: 91 char: [
value: 92 char: \
value: 93 char: ]
value: 94 char: ^
value: 95 char: _
value: 96 char: `
value: 97 char: a
value: 98 char: b
value: 99 char: c
value: 100 char: d
value: 101 char: e
value: 102 char: f
value: 103 char: g
value: 104 char: h
value: 105 char: i
value: 106 char: j
value: 107 char: k
value: 108 char: l
value: 109 char: m
value: 110 char: n
value: 111 char: o
value: 112 char: p
value: 113 char: q
value: 114 char: r
value: 115 char: s
value: 116 char: t
value: 117 char: u
value: 118 char: v
value: 119 char: w
value: 120 char: x
value: 121 char: y
value: 122 char: z
value: 123 char: {
value: 124 char: |
value: 125 char: }
value: 126 char: ~
value: 127 char:
value: 128 char: ?
value: 129 char: ?
value: 130 char: ?
value: 131 char: ?
value: 132 char: ?
value: 133 char: ?
value: 134 char: ?
value: 135 char: ?
value: 136 char: ?
value: 137 char: ?
value: 138 char: ?
value: 139 char: ?
value: 140 char: ?
value: 141 char: ?
value: 142 char: ?
value: 143 char: ?
value: 144 char: ?
value: 145 char: ?
value: 146 char: ?
value: 147 char: ?
value: 148 char: ?
value: 149 char: ?
value: 150 char: ?
value: 151 char: ?
value: 152 char: ?
value: 153 char: ?
value: 154 char: ?
value: 155 char: ?
value: 156 char: ?
value: 157 char: ?
value: 158 char: ?
value: 159 char: ?
value: 160 char: ?
value: 161 char: ?
value: 162 char: ?
value: 163 char: ?
value: 164 char: ?
value: 165 char: ?
value: 166 char: ?
value: 167 char: ?
value: 168 char: ?
value: 169 char: ?
value: 170 char: ?
value: 171 char: ?
value: 172 char: ?
value: 173 char: ?
value: 174 char: ?
value: 175 char: ?
value: 176 char: ?
value: 177 char: ?
value: 178 char: ?
value: 179 char: ?
value: 180 char: ?
value: 181 char: ?
value: 182 char: ?
value: 183 char: ?
value: 184 char: ?
value: 185 char: ?
value: 186 char: ?
value: 187 char: ?
value: 188 char: ?
value: 189 char: ?
value: 190 char: ?
value: 191 char: ?
value: 192 char: ?
value: 193 char: ?
value: 194 char: ?
value: 195 char: ?
value: 196 char: ?
value: 197 char: ?
value: 198 char: ?
value: 199 char: ?
value: 200 char: ?
value: 201 char: ?
value: 202 char: ?
value: 203 char: ?
value: 204 char: ?
value: 205 char: ?
value: 206 char: ?
value: 207 char: ?
value: 208 char: ?
value: 209 char: ?
value: 210 char: ?
value: 211 char: ?
value: 212 char: ?
value: 213 char: ?
value: 214 char: ?
value: 215 char: ?
value: 216 char: ?
value: 217 char: ?
value: 218 char: ?
value: 219 char: ?
value: 220 char: ?
value: 221 char: ?
value: 222 char: ?
value: 223 char: ?
value: 224 char: ?
value: 225 char: ?
value: 226 char: ?
value: 227 char: ?
value: 228 char: ?
value: 229 char: ?
value: 230 char: ?
value: 231 char: ?
value: 232 char: ?
value: 233 char: ?
value: 234 char: ?
value: 235 char: ?
value: 236 char: ?
value: 237 char: ?
value: 238 char: ?
value: 239 char: ?
value: 240 char: ?
value: 241 char: ?
value: 242 char: ?
value: 243 char: ?
value: 244 char: ?
value: 245 char: ?
value: 246 char: ?
value: 247 char: ?
value: 248 char: ?
value: 249 char: ?
value: 250 char: ?
value: 251 char: ?
value: 252 char: ?
value: 253 char: ?
value: 254 char: ?
value: 255 char: ?
g++ fstream1.cpp -std=c++2a -Wall
value: 32 char:
value: 33 char: !
value: 34 char: "
value: 35 char: #
value: 36 char: $
value: 37 char: %
value: 38 char: &
value: 39 char: '
value: 40 char: (
value: 41 char: )
value: 42 char: *
value: 43 char: +
value: 44 char: ,
value: 45 char: -
value: 46 char: .
value: 47 char: /
value: 48 char: 0
value: 49 char: 1
value: 50 char: 2
value: 51 char: 3
value: 52 char: 4
value: 53 char: 5
value: 54 char: 6
value: 55 char: 7
value: 56 char: 8
value: 57 char: 9
value: 58 char: :
value: 59 char: ;
value: 60 char: <
value: 61 char: =
value: 62 char: >
value: 63 char: ?
value: 64 char: @
value: 65 char: A
value: 66 char: B
value: 67 char: C
value: 68 char: D
value: 69 char: E
value: 70 char: F
value: 71 char: G
value: 72 char: H
value: 73 char: I
value: 74 char: J
value: 75 char: K
value: 76 char: L
value: 77 char: M
value: 78 char: N
value: 79 char: O
value: 80 char: P
value: 81 char: Q
value: 82 char: R
value: 83 char: S
value: 84 char: T
value: 85 char: U
value: 86 char: V
value: 87 char: W
value: 88 char: X
value: 89 char: Y
value: 90 char: Z
value: 91 char: [
value: 92 char: \
value: 93 char: ]
value: 94 char: ^
value: 95 char: _
value: 96 char: `
value: 97 char: a
value: 98 char: b
value: 99 char: c
value: 100 char: d
value: 101 char: e
value: 102 char: f
value: 103 char: g
value: 104 char: h
value: 105 char: i
value: 106 char: j
value: 107 char: k
value: 108 char: l
value: 109 char: m
value: 110 char: n
value: 111 char: o
value: 112 char: p
value: 113 char: q
value: 114 char: r
value: 115 char: s
value: 116 char: t
value: 117 char: u
value: 118 char: v
value: 119 char: w
value: 120 char: x
value: 121 char: y
value: 122 char: z
value: 123 char: {
value: 124 char: |
value: 125 char: }
value: 126 char: ~
value: 127 char:
value: 128 char: ?
value: 129 char: ?
value: 130 char: ?
value: 131 char: ?
value: 132 char: ?
value: 133 char: ?
value: 134 char: ?
value: 135 char: ?
value: 136 char: ?
value: 137 char: ?
value: 138 char: ?
value: 139 char: ?
value: 140 char: ?
value: 141 char: ?
value: 142 char: ?
value: 143 char: ?
value: 144 char: ?
value: 145 char: ?
value: 146 char: ?
value: 147 char: ?
value: 148 char: ?
value: 149 char: ?
value: 150 char: ?
value: 151 char: ?
value: 152 char: ?
value: 153 char: ?
value: 154 char: ?
value: 155 char: ?
value: 156 char: ?
value: 157 char: ?
value: 158 char: ?
value: 159 char: ?
value: 160 char: ?
value: 161 char: ?
value: 162 char: ?
value: 163 char: ?
value: 164 char: ?
value: 165 char: ?
value: 166 char: ?
value: 167 char: ?
value: 168 char: ?
value: 169 char: ?
value: 170 char: ?
value: 171 char: ?
value: 172 char: ?
value: 173 char: ?
value: 174 char: ?
value: 175 char: ?
value: 176 char: ?
value: 177 char: ?
value: 178 char: ?
value: 179 char: ?
value: 180 char: ?
value: 181 char: ?
value: 182 char: ?
value: 183 char: ?
value: 184 char: ?
value: 185 char: ?
value: 186 char: ?
value: 187 char: ?
value: 188 char: ?
value: 189 char: ?
value: 190 char: ?
value: 191 char: ?
value: 192 char: ?
value: 193 char: ?
value: 194 char: ?
value: 195 char: ?
value: 196 char: ?
value: 197 char: ?
value: 198 char: ?
value: 199 char: ?
value: 200 char: ?
value: 201 char: ?
value: 202 char: ?
value: 203 char: ?
value: 204 char: ?
value: 205 char: ?
value: 206 char: ?
value: 207 char: ?
value: 208 char: ?
value: 209 char: ?
value: 210 char: ?
value: 211 char: ?
value: 212 char: ?
value: 213 char: ?
value: 214 char: ?
value: 215 char: ?
value: 216 char: ?
value: 217 char: ?
value: 218 char: ?
value: 219 char: ?
value: 220 char: ?
value: 221 char: ?
value: 222 char: ?
value: 223 char: ?
value: 224 char: ?
value: 225 char: ?
value: 226 char: ?
value: 227 char: ?
value: 228 char: ?
value: 229 char: ?
value: 230 char: ?
value: 231 char: ?
value: 232 char: ?
value: 233 char: ?
value: 234 char: ?
value: 235 char: ?
value: 236 char: ?
value: 237 char: ?
value: 238 char: ?
value: 239 char: ?
value: 240 char: ?
value: 241 char: ?
value: 242 char: ?
value: 243 char: ?
value: 244 char: ?
value: 245 char: ?
value: 246 char: ?
value: 247 char: ?
value: 248 char: ?
value: 249 char: ?
value: 250 char: ?
value: 251 char: ?
value: 252 char: ?
value: 253 char: ?
value: 254 char: ?
value: 255 char: ?
clang++ fstream2.cpp -std=c++2a -Wall
g++ fstream2.cpp -std=c++2a -Wall
clang++ ignore1.cpp -std=c++2a -Wall
read int and ignore rest of the line
int: 0
read int and ignore two lines
int: 0
g++ ignore1.cpp -std=c++2a -Wall
read int and ignore rest of the line
int: 1
read int and ignore two lines
int: 1
$ ../cga.sh io8
clang++ ignore2.cpp -std=c++2a -Wall
read int and ignore rest of the line
int: 0
read int and ignore two lines
int: 0
read int:
int: 0
g++ ignore2.cpp -std=c++2a -Wall
read int and ignore rest of the line
int: 32766
read int and ignore two lines
int: 32766
read int:
int: 32766
$ ../cga.sh io9
clang++ inbuf1.cpp -std=c++2a -Wall
io1.cpp
p
outbuf1.cp
g++ inbuf1.cpp -std=c++2a -Wall
p
outbufuf1i18n.cpp
clang++ outbuf2.cpp -std=c++2a -Wall
31 hexadecimal: 1f
g++ outbuf2.cpp -std=c++2a -Wall
31 hexadecimal: 1f
clang++ outbuf3.cpp -std=c++2a -Wall
31 hexadecimal: 1f
g++ outbuf3.cpp -std=c++2a -Wall
31 hexadecimal: 1f
clang++ sstream1.cpp -std=c++2a -Wall
dec: 15 hex: f
oct: 17 hex: f
float: 4.67 bitset: 001011010011101
g++ sstream1.cpp -std=c++2a -Wall
dec: 15 hex: f
oct: 17 hex: f
float: 4.67 bitset: 001011010011101
clang++ sstream2.cpp -std=c++2a -Wall
firstname: Nicolai
middle: M.
lastname: Josuttis
firstname: Nico
middle:
lastname: Josuttis
g++ sstream2.cpp -std=c++2a -Wall
firstname: Nicolai
middle: M.
lastname: Josuttis
firstname: Nico
middle:
lastname: Josuttis
clang++ streambuffer1.cpp -std=c++2a -Wall
hexout: 0xb1 cout: 177 hexout: 0xffffffcf cout: -49
g++ streambuffer1.cpp -std=c++2a -Wall
hexout: 0xb1 cout: 177 hexout: 0xffffffcf cout: -49
clang++ streambuffer2.cpp -std=c++2a -Wall
We print 5 lines hexadecimal
0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa
0x2 0x4 0x6 0x8 0xa 0xc 0xe 0x10 0x12 0x14
0x3 0x6 0x9 0xc 0xf 0x12 0x15 0x18 0x1b 0x1e
0x4 0x8 0xc 0x10 0x14 0x18 0x1c 0x20 0x24 0x28
0x5 0xa 0xf 0x14 0x19 0x1e 0x23 0x28 0x2d 0x32
That was the output of 5 hexadecimal lines
g++ streambuffer2.cpp -std=c++2a -Wall
We print 5 lines hexadecimal
0x1 0x2 0x3 0x4 0x5 0x6 0x7 0x8 0x9 0xa
0x2 0x4 0x6 0x8 0xa 0xc 0xe 0x10 0x12 0x14
0x3 0x6 0x9 0xc 0xf 0x12 0x15 0x18 0x1b 0x1e
0x4 0x8 0xc 0x10 0x14 0x18 0x1c 0x20 0x24 0x28
0x5 0xa 0xf 0x14 0x19 0x1e 0x23 0x28 0x2d 0x32
That was the output of 5 hexadecimal lines
clang++ streamreadwrite1.cpp -std=c++2a -Wall
1. line
1. line
2. line
1. line
2. line
3. line
1. line
2. line
3. line
4. line
g++ streamreadwrite1.cpp -std=c++2a -Wall
1. line
1. line
2. line
1. line
2. line
3. line
1. line
2. line
3. line
4. line
clang++ streamredirect1.cpp -std=c++2a -Wall
the first row
the last row
g++ streamredirect1.cpp -std=c++2a -Wall
the first row
the last row
clang++ sum1.cpp -std=c++2a -Wall
I/O exception: ios_base::clear: unspecified iostream_category error
g++ sum1.cpp -std=c++2a -Wall
sum: 0
$ ../cga.sh ioa
clang++ sum2.cpp -std=c++2a -Wall
I/O exception: input error in readAndProcessSum(): unspecified iostream_category error
g++ sum2.cpp -std=c++2a -Wall
sum: 0
$ ../cga.sh iob
clang++ timemanipulator1.cpp -std=c++2a -Wall
date: 06/17/18
time: 12:11:13
new time [HH:MM]: invalid format read
g++ timemanipulator1.cpp -std=c++2a -Wall
date: 06/17/18
time: 12:11:14
new time [HH:MM]: invalid format read
検討事項(agenda)
- コンパイルエラーをなくす修正方法
- 役に立つまたは意味のあるその他の出力
参考資料(reference)
プログラミング言語教育のXYZ
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4
プログラミング言語教育のXYZ(youtube)
https://www.youtube.com/watch?v=He1_tg4px-w&t=486s
Autosar Guidelines C++14
Autosar Guidelines C++14 example code compile list(1-169)
https://qiita.com/kaizen_nagoya/items/8ccbf6675c3494d57a76
C++N4741 2018
Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2018/n4741.pdf
C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list
https://qiita.com/kaizen_nagoya/items/3294c014044550896010
C++N4606 2016
Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/n4606.pdf
C++N4606, 2016符号断片編纂一覧(example code compile list)
Working Draft 2016, ISO/IEC 14882(1)
https://qiita.com/kaizen_nagoya/items/df5d62c35bd6ed1c3d43/
### CEDD(Compile Error Driven Design)
初めての CEDD(Compile Error Driven Design) 8回直してコンパイル。
https://qiita.com/kaizen_nagoya/items/9494236aa1753f3fd1e1
コンパイルエラーを記録するとよい理由7つ
https://qiita.com/kaizen_nagoya/items/85c0e92b206883140e89
docker gnu(gcc/g++) and llvm(clang/clang++)
https://qiita.com/drafts/059874ea39c4de64c0f7
[C][C++]の国際規格案の例題をコンパイルするときの課題7つ。
https://qiita.com/kaizen_nagoya/items/5f4b155030259497c4de
C++N4606 Working Draft 2016, ISO/IEC 14882, C++ standardのコード断片をコンパイルするためにしていること
https://qiita.com/kaizen_nagoya/items/a8d7ee2f2e29e76c19c1
コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)
https://qiita.com/kaizen_nagoya/items/74220c0577a512c2d7da
Clang/Clang++(LLVM) gcc/g++(GNU) コンパイラ警告等比較
https://qiita.com/kaizen_nagoya/items/9a82b958cc3aeef0403f
C++2003とC++2017でコンパイルエラーになるならない事例集
https://qiita.com/kaizen_nagoya/items/a13ea3823441c430edff
Qiitaに投稿するCのStyle例(暫定)
https://qiita.com/kaizen_nagoya/items/946df1528a6a1ef2bc0d
cpprefjpのdecltypeをコンパイル試験
https://qiita.com/kaizen_nagoya/items/090909af702f0d5d8a67
MISRA C++ 5-0-16
https://qiita.com/kaizen_nagoya/items/7df2d4e05db724752a74
C++ Templates Part1 BASICS Chapter 3. Class Templates 3.2 Use of Class Template Stack stack1test.cpp
https://qiita.com/kaizen_nagoya/items/cd5fc49106fad5a4e9ed
ISO/IEC TS 17961:2013 C Secure Coding Rules(1) All list(to be confirmed)
https://qiita.com/kaizen_nagoya/items/54e056195c4f11b850a1
C言語(C++)に対する誤解、曲解、無理解、爽快。
https://qiita.com/kaizen_nagoya/items/3f3992c9722c1cee2e3a
C Puzzle Bookの有り難み5つ、C言語規格及びCコンパイラの特性を認識
https://qiita.com/kaizen_nagoya/items/d89a48c1536a02ecdec9
'wchar.h' file not found で困った clang++ macOS
https://qiita.com/kaizen_nagoya/items/de15cd46d657517fac11
Open POSIX Test Suiteの使い方を調べはじめました
https://qiita.com/kaizen_nagoya/items/644d5e407f5faf96e6dc
MISRA-C 2012 Referenceに掲載している文献の入手可能性を確認
https://qiita.com/kaizen_nagoya/items/96dc8b125e462d5575bb
どうやって MISRA Example Suiteをコンパイルするか
https://qiita.com/kaizen_nagoya/items/fbdbff5ff696e2ca7f00
MISRA C まとめ #include
https://qiita.com/kaizen_nagoya/items/f1a79a7cbd281607c7c9
「C++完全理解ガイド」の同意できること上位10
https://qiita.com/kaizen_nagoya/items/aa5744e0c4a8618c7671
文献履歴(document history)
ver. 0.10 初稿 20180616
ver. 0.11 まとめURL追記 20180625
ver. 0.12 ありがとう追記 20230413
最後までおよみいただきありがとうございました。
いいね 💚、フォローをお願いします。
Thank you very much for reading to the last sentence.
Please press the like icon 💚 and follow me for your happy life.