yohhoyの日記

技術的メモをしていきたい日記

2021-09-01から1ヶ月間の記事一覧

signatureの定義 @ C++20

C++

C++20以降での関数シグネチャ(signature)の定義について。Concepts導入によりテンプレート制約も追加で考慮される。まとめ: 関数:名前、引数型リスト、所属する名前空間(戻り値型は除外) 関数テンプレート:名前、引数型リスト、戻り値型、所属する名前…

std::coutの実体はどこ?

C++標準ライブラリで定義されるグローバルオブジェクトstd::cout等の宣言と定義についてメモ。GCC/libstdc++およびClang/libcxxライブラリ実装では、宣言型(std::ostream)と実体定義の型(char[])を意図的に変えている。型の不一致は厳密にはC++仕様違反*1だ…

realloc(ptr, 0)は廃止予定

C標準ライブラリrealloc関数に対して、サイズ0を指定すべきでない。realloc(ptr, 0)によってptrが指すメモリブロックが解放(free(ptr)相当)される保証はない。この動作は ISO C および POSIX それぞれで明言されている。JPCERT MEM04-C サイズ0のメモリ割…

レンジ to コンテナ変換

次期C++2b(C++23)標準ライブラリに向けて、Rangesから各種コンテナ型への直接変換サポートが検討されている。(PDF)P1206R6では下記の機能追加/拡張を提案している。 コンテナ型Cへの変換std::ranges::to<C>レンジアダプタ(range adaptor) 標準コンテナへのstd:</c>…

Last Piece of ラムダ式への属性指定

C++20現在の言語仕様では、ラムダ式に対して(普通のプログラマが期待するであろう)属性指定は行えない。C++2b(C++23)に向けた提案(PDF)P2173R0が進行中。 2022-02-17追記:2022年2月会合にてC++2b(C++23)へ提案文書(PDF)P2173R1が採択された。下記コードは…