yohhoyの日記

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

C++2a

C++標準ライブラリのカレンダー(Calendar)

C++2a(C++20)標準ライブラリ <chrono> ヘッダに追加される カレンダー(Calendar) サポートについてざっくりメモ。本記事では簡単のため名前空間std::chronoを省略する。またタイムゾーン(Time Zone)サポートには言及しない。まとめ: 型安全(Type safety): 年(year)</chrono>…

C++標準ライブラリの時計(Clock)

C++2a(C++20)標準ライブラリ <chrono> ヘッダに追加される 時計(Clock) クラス一覧。いずれもstd::chrono名前空間に属する。 Clock 概要 基点(epoch) うるう秒 system_clock システムクロック[C++11] 1970-01-01 00:00:00 UTC 除外 utc_clock 協定世界時(UTC)クロ</chrono>…

C++ Synchronized Buffered Ostream

C++2a(C++20)に向けて(PDF)P0053R6が採択され、マルチスレッド環境下でのストリーム出力排他制御をサポートする同期化出力ストリームstd::osyncstreamが追加される。 // C++2a(C++20) #include <syncstream> #include <iostream> void thread1(int value) { // 下記行の処理結果が</iostream></syncstream>…

C++ Concepts(P0734R0)

次期C++2a(C++20)標準規格に向けて採択された コンセプト(concept) についてメモ。*1本記事の内容は(PDF)P0734R0 Wording Paper, C++ extensions for Conceptsに基づく。要約: 新しいキーワード:concept, requires 新しい構文:コンセプト定義, requires式…

Designated Initialization @ C++

C++2a(C++20)で導入予定のDesignated Initialization(指示付きの初期化)ついてメモ。C99での同一言語機能をベースとするが、一部機能制限された形でC++に導入される。 // C++2a(C++20) struct Point { int x, y; }; void f(Point); f({ .x = 100, .y = 50 …

C標準ヘッダ in 未来のC++

プログラミング言語C++標準規格におけるC標準ヘッダ(<stdlib.h> や <stdio.h> など)の扱いについて。2021-10-27追記:C++2b(C++23)に向けた提案 P2340R1 が採択され、全てのC標準ヘッダについて廃止予定が取り止められた。例えば<iso646.h>ヘッダは空っぽ、<complex.h>ヘッダは#include <complex>と規定され</complex></complex.h></iso646.h></stdio.h></stdlib.h>…