[C++]WG21月次提案文書を眺める(2021年08月)

文書の一覧 JTC1/SC22/WG21 - Papers 2021 mailing2021-08 全部で29本あります。 N4895 Working Draft, Extensions to C++ for Concurrency Version 2 P1018R12 C++ Language Evolution status pandemic edition 2021/06–2021/08 P1072R9 basic_string::re…

[C++]メンバ型のトリビアル性を継承するロストテクノロジー

std::optionalやstd::variantは保持する型がトリビアルな型であれば、そのトリビアル性を継承することが規格によって求められており、その実装には非常に難解なテクニックが使用されます。しかし、C++20以降、このテクニックは過去のものとなり忘れ去られて…

[C++]トリビアルってトリビアル?

別のことを調べていたらなぜか出来上がっていたメモです・・・ ABIとtriviality 各種ABIでのトリビアル性と引数渡し、戻り値返し Itanium C++ ABI System V AMD64 ABI ARM64 C++ ABI Windows x64 呼び出し規約 (Windwos x64 ABI) Windows ARM64 ABI 引数が多…

[C++]WG21月次提案文書を眺める(2021年07月)

文書の一覧 JTC1/SC22/WG21 - Papers 2021 mailing2021-07 全部で39本あります。 N4894 Business Plan and Convener's Report P0288R8 move_only_function (was any_invocable) P0847R7 Deducing this P1206R4 Conversions from ranges to containers P1726R…

[C++]WG21月次提案文書を眺める(2021年06月)

文書の一覧 JTC1/SC22/WG21 - Papers 2021 mailing2021-06 全部で49本あり、SG22(C/C++相互互換性に関する研究グループ)のCの提案を除くと48本になります。 N4887 PL22.16/WG21 agenda: 7 June 2021, Virtual Meeting N4888 WG21 virtual meetings: 2021-0…

[C++] std::formatあるいは{fmt}のコンパイル時フォーマット文字列チェックの魔術

コンパイル時フォーマット文字列チェック basic-format-stringクラス constevalコンストラクタ 実装例 応用例 参考文献 コンパイル時フォーマット文字列チェック {fmt}ライブラリおよび<format>には、コンパイル時のフォーマット文字列チェック機能が実装されていま</format>…

[C++]WG21月次提案文書を眺める(2021年05月)

文書の一覧 JTC1/SC22/WG21 - Papers 2021 mailing2021-05 全部で44本あり、SG22(C/C++相互互換性に関する研究グループ)のCの提案を除くと36本になります。 P0009R11 MDSPAN P0009R12 MDSPAN P0447R14 Introduction of std::colony to the standard librar…

[C++]C++20モジュールの変遷 - Module TSからC++20DISまで

C++20のモジュールは確かにある一つの提案がベースになっているのですが、その後C++20策定完了までの間に複数の提案やIssue報告によってそこそこ大きく変化しています。その結果、C++20のモジュールはその全体像を把握するためにどれか一つの提案を読めばわ…

[C++]WG21月次提案文書を眺める(2021年04月)

文書の一覧 JTC1/SC22/WG21 - Papers 2021 mailing2021-04 全部で55本あり、SG22(C/C++相互互換性に関する研究グループ)のCの提案を除くと48本になります。 P0323R10 std::expected P0447R13 Introduction of std::colony to the standard library P1121R3…

[C++]TU-local Entityをexposureするのこと(禁止)

モジュールと内部リンケージ名 例 TU-local Entities? TU-local Entityの曝露(exposure) TU-local Entityを曝露してたら・・・ テンプレート 明示的インスタンス化 メンバ関数の暗黙inline さんぷるこーど モジュールにおけるinlineの意味 モジュールリン…

[C++]WG21月次提案文書を眺める(2021年03月)

文書の一覧 JTC1/SC22/WG21 - Papers 2021 mailing2021-03 全部で36本あり、SG22(C/C++相互互換性に関する研究グループ)のCの提案を除くと32本になります。 採択された文書 P2313R0 Core Language Working Group "tentatively ready" issues for the Febru…

[C++]WG21月次提案文書を眺める(2021年02月)

文書の一覧 JTC1/SC22/WG21 - Papers 2021 mailing2021-02 採択されたものはありません、全部で58本あります。 が、SG22(C/C++相互互換性に関する研究グループ)経由でCの提案が含まれているので、そこからC++に対してのものでないものを除くと48本になりま…

[C++]indirectly_writableコンセプトの謎の制約式の謎

std::indirectly_writableコンセプトはイテレータによる出力操作を定義するコンセプトで、std::output_iteratorコンセプトの中核部分を成しています。 template<class Out, class T> concept indirectly_writable = requires(Out&& o, T&& t) { *o = std::forward<T>(t); *std::forw</t></class>…

[C++]ラムダキャプチャの記述順序

ラムダ式を雰囲気で書いているので、キャプチャの正しい順序が分かりません。そのため、コンパイラに怒られて直したり怒られなかったからヨシ!をしています。 正しい順序とは一体何なのでしょうか・・・? 正しいキャプチャ順序 C++20現在、キャプチャには3種…

[C++]WG21月次提案文書を眺める(2021年01月)

文書の一覧 JTC1/SC22/WG21 - Papers 2021 mailing2021-01 採択されたものはありません、全部で30本あります。 SD-1 2021 PL22.16/WG21 document list P0447R12 Introduction of std::colony to the standard library P0847R6 Deducing this P1121R2 Hazard …

[C++]推論補助(deduction guide)にexportはいるの?

A : いりません 根拠 モジュールにおけるexport宣言は、そのモジュールのインターフェース単位でのみ行うことができます。export宣言は名前を導入するタイプの宣言の前にexportを付けることで行い、その名前に外部リンケージを与える以外は元の宣言と同じ効…

[C++]WG21月次提案文書を眺める(2020年12月)

文書の一覧 JTC1/SC22/WG21 - Papers 2020 mailing2020-12 採択されたものはありません、全部で32本あります。 N4878 Working Draft, Standard for Programming Language C++ N4879 Editors' Report - Programming Languages - C++ P0401R5 Providing size f…

[C++] C++17イテレータ <=> C++20イテレータ != 0

これはC++ Advent Calendar 2020の24日めの記事です(大遅刻です、すいません)。 前回と前々回でC++20のイテレータは一味も二味も違うぜ!という事を語ったわけですが、具体的にどう違うのかを見てみようと思います。 iterator C++17 C++20 差異 input iter…

[C++]C++20からのiterator_traits事情

これはC++ Advent Calendar 2020の14日めの記事です。 C++20のiterator_traitsには、C++17以前のコードに対する互換レイヤとしての複雑な役割が与えられるようになります。従って、C++20からのイテレータ情報の問い合わせには前回説明したものを利用するよう…

[C++] C++20からのイテレータの素行調査方法

これはC++ Advent Calendar 2020の11日めの記事です。 これまでiterator_traitsを介して取得していたイテレータ情報は、C++20からはより簡易な手段を介して取得できるようになります。 特に、C++20以降はiterator_traitsを使わずにこれらのものを利用するこ…

[C++]WG21月次提案文書を眺める(2020年11月)

文書の一覧 JTC1/SC22/WG21 - Papers 2020 mailing2020-11 全部で42本あります。 採択された文書 P0943R6 Support C atomics in C++ P1787R6 Declarations and where to find them その他文書 N4869 WG21 Pre-Autumn 2020 telecon minutes N4871 WG21 Pre-Au…

[C++]inline名前空間の使途

inline名前空間はC++11から追加された機能で、その中にあるものは透過的に(名前空間がないかのように)アクセスすることができます。一見使いどころがなく見られがちですが、うまく使えばとても便利に活用することができます。 1. using namespaceの範囲を…

[C++]WG21月次提案文書を眺める(2020年10月)

文書の一覧 www.open-std.org 提案文書で採択されたものはありません。全部で35本あります。 N4863 Agenda for Fall Virtual WG21/PL22.16 Meeting N4864 WG21 virtual meeting: Autumn 2020 N4865 Response to Editorial Comments: ISO/IEC DIS 14882, Prog…

[C++]std::exchangeによるmoveしてリセットするイディオムの御紹介

2020年10月公開分の提案文書を眺めていたら良さげなものを見つけたので宣伝です。そのため、この記事の内容は次の提案文書を元にしています。 P2226R0 A function template to move from an object and reset it to its default constructed state もくじ mo…

[C++]WG21月次提案文書を眺める(2020年9月)

文書の一覧 www.open-std.org 提案文書で採択されたものはありません。全部で32本あります。 P0288R7 : any_invocable P0443R14 : A Unified Executors Proposal for C++ P0881R7 : A Proposal to add stacktrace library P0958R2 : Networking TS changes t…

[C++]モジュールにおける所有権モデル

モジュールにおける所有権とは、名前付きモジュールに属しているエンティティの名前に関する所有権の事で、次のようなコードがどう振舞うかを決定するものです。 /// moduleA.ixx export module moduleA; export int munge(int a, int b) { return a + b; } …

[C++]WG21月次提案文書を眺める(2020年8月)

文書の一覧 www.open-std.org 提案文書で採択されたものはありません。全部で21本あります。 N4862 : Business Plan and Convener's Report P0288R6 : any_invocable P0881R6 : A Proposal to add stacktrace library P1787R5 : Declarations and where to f…

[C++]WG21月次提案文書を眺める(2020年7月)

文書の一覧 www.open-std.org 提案文書で採択されたものはありません。全部で34本あります。 P1068R4 : Vector API for random number generation P1184R2 : A Module Mapper P1272R3 : Byteswapping for fun&&nuf P1478R4 : Byte-wise atomic memcpy P1642R…

Github Actions上のDockerコンテナ上のGCCの最新版でテストを走らせたかった

Github Actionsで用意されているubuntu 20.04環境に用意されているソフトウェアを見るとGCCは9.3が用意されています(2020年7月24日現在)。しかしGCC9.3はC++20対応がほぼなされていないので使い物になりません(個人の感想です)。いつかは追加されるでし…

[C++]Forwarding referenceとコンセプト定義

コンセプトを定義するとき、あるいはrequires節で制約式を書くとき、はたまたrequires式でローカルパラメータを使用するとき、その型パラメータがForwarding referenceから来ているものだと使用する際に少し迷う事があります。 // operator*による間接参照が…