Google
ブログ(iiyu.asablo.jpの検索)
ホットコーナー内の検索
 でもASAHIネット(asahi-net.or.jp)全体の検索です。
 検索したい言葉のあとに、空白で区切ってki4s-nkmrを入れるといいかも。
 例 中村(show) ki4s-nkmr

ウェブ全体の検索

極私的Modern C++速習法、早くModern C++にスキルアップすべき人、Modern C++のオンラインリソースや本のまとめ。2024年01月21日 23時36分13秒

ASAHIネット(http://asahi-net.jp )のブログサービス、アサブロ(https://asahi-net.jp/asablo/ )を使っています。
---
 X(旧Twitter)で、セガ・龍が如くスタジオ技術責任者の伊東豊さんが、C++のことを書いていた。それに「C++は現役なんですね」というコメントが付いていたので、ああ、C++が劇的に進化しているのを知らないんだなと思ってコメントした。

https://twitter.com/yutakaito_rgg/status/1745050214476677561
--- ここから ---
伊東 豊(セガ・龍が如くスタジオ技術責任者)
@YutakaIto_RGG
ちなみに、龍が如くは「C++」という「プログラム言語」で書かれているのですが、ここで実際に龍が如く8で使われているプログラムをほんの少しお見せします😎
意外とシンプルなので、C++の基礎をしっかりと学んでいれば十分龍チームで働くことができると思います。就活生の皆さん、お待ちしています🙇‍♂️
--- ここまで ---

https://twitter.com/igabooks2241/status/1745918066117234953
--- ここから ---
C++大事(現役)なんですね
--- ここまで ---

https://twitter.com/shownakamura/status/1745943624188379433
--- ここから ---
Modern C++と呼ばれるC++11以降のC++は、初期のC++からすれば驚くべき進化を遂げています。RubyやPython並みとは言わなくても、JavaやC#並みに書きやすく、拡張も保守もしやすくなっています。ゲーム屋さんは極限までスピードを求めるから、そういう機能はあまり使わないかもしれませんが。
--- ここまで ---

 C++11以降のModern C++は、それ以前の古いC++に比べ、簡単に見通しがよくバグがなく実行効率がいいプログラムが書けるようになっています。
 RubyやPython並みとは言わなくても、JavaやC#並みに書きやすく、しかも、実行スピードは、RubyやPythonより断然速いし、JavaやC#よりも速いコードが書けます。
 これからC++をやるなら、Modern C++以前の書き方ではなく、Modern C++で書くべきです。
 ムーブセマンティクス、ラムダ式、型推論、スマートポインタ、コンテナとアルゴリズムを習得すれば、かなりModern C++で書けるようになって、中級者になれます。
 テンプレートメタプログラミング(Template Meta Programming, TMP)は上級者レベルですが、それもC++17, C++20とどんどん書きやすくなってます。

 ということで、ぼくが勤めるアンテナハウスで、まだソフトウェア開発、プログラミングの経験が浅い人や、頭がいまだにCや古いC++の人に、C++11以降のModernC++を速習する話を以前まとめたことがあるので、それを再編集、再構成して、ここに出しておきます。

https://www.antenna.co.jp
アンテナハウス

 C++の本やオンラインリソースで一番注意しておくべきは、新しい規格に対応しているかどうかです。C++11以降のModern C++は、劇的に進化しているので、今なら、最低C++17、できればC++20に対応した内容のものがいいです。
 特にネットの記事には、Modern C++以前の古いC++のやり方やイディオムが載っていて、「イマドキ、そんな書き方しないのに」というのもあり、それに、「こんなやり方があるんですね」などと、コメントがついているのを見ると、あー、かわいそうと思います。
 後述するように、C++11やC++14の内容でも、今でも立派に通用するいい本やオンラインリソースはあるけれど、一応の目安としては、C++17以降の規格に対応したものを選ぶべきです。
 対応してない本でも、C++の基本的なところがしっかりわかるような本であれば、それで勉強して、C++17以降については、別の本でさらに勉強すればいのですが、C++17やC++20対応のいい本があれば、それが望ましいです。

 以下は、プログラミング初心やプログラミング経験が浅い人でも、「リーダブルコード」や「Good Code, Bad Code」くらいのプログラミング全般のよい知識は、知っている、あるいは、身についていることが前提です。
 どのプログラミング言語を勉強するにせよ、これくらいは、最初に知っておかないと、まともなプログラムが書けません。
 ぼくが勤めるアンテナハウスで作っているシステムコンポーネントになるコアなライブラリを作る場合でも、ウェブのフロントエンドやバックエンドを作る場合でも、基礎ができてないと、まともなプログラムが書けません。

 やさしい、簡単などとタイトルで謳う入門書は、最初のとっつきはいいかもしれませんが、仕事では、すぐ、そのレベル以上のものが必要になります。
 こういう本が悪いということではなく、こういうレベルの本で入門しても、すぐ、もっと難しい本で勉強しないと、プログラミングのスキルは伸びません。
 基礎、基本は本当に大事です。

■リーダブルコード
https://www.amazon.co.jp/exec/obidos/ASIN/4873115655/showshotcorne-22/
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック (Theory in practice) 単行本(ソフトカバー) – 2012/6/23
Dustin Boswell (著), Trevor Foucher (著), 須藤 功平 (解説), 角 征典 (翻訳)

 電子書籍はオライリー・ジャパンで買えます。
http://www.oreilly.co.jp/books/9784873115658/
リーダブルコード
――より良いコードを書くためのシンプルで実践的なテクニック

■Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考 Kindle版
https://www.amazon.co.jp/exec/obidos/ASIN/4798068160/showshotcorne-22/
Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考 単行本(ソフトカバー) – 2023/1/28
Tom Long (著), 秋勇紀 (翻訳), 高田新山 (翻訳), 山本大祐 (監修)
単行本(ソフトカバー)
¥3,960

https://www.amazon.co.jp/exec/obidos/ASIN/B0BSW72QKZ/showshotcorne-22/
Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考 Kindle版
TomLong (著), 秋勇紀 (著), 高田新山 (著), 山本大祐 (著) 形式: Kindle版
Kindle版 (電子書籍)
¥3,208

関連:
http://iiyu.asablo.jp/blog/2014/05/19/7314862
リーダブルコード―より良いコードを書くためのシンプルで実践的なテクニック、コーディングを支える技術 成り立ちから学ぶプログラミング作法
http://iiyu.asablo.jp/blog/2016/04/08/8067423
C++の解説本、STL, Effectvieシリーズ、ゲームプログラマのためのコーディング技術、リーダブルコード、Code Complete, コーディングを支える技術
http://iiyu.asablo.jp/blog/2023/03/31/9573670
Good Code, Bad Code ~持続可能な開発のためのソフトウェアエンジニア的思考、良いコード/悪いコードで学ぶ設計入門、セキュア・バイ・デザイン: 安全なソフトウェア設計、APIデザイン・パターン、単体テストの考え方/使い方、プログラマー脳

■OOPとFP
 オブジェクト指向プログラミング(Object Oriented Programming, OOP)や関数型プログラミング(Functional Programming, FP)は、それぞれが大きなテーマなので、自分で調べて勉強してください。
 C++は、最初は、CにOOPのクラスを追加するトランスレータとして開発されたので、OOPは最初から入っていました。C++11以降のModern C++になってからは、ラムダ式などFPの要素を取り入れています。
 50年ほど前の学生時代にLispをやったぼくからすれば、やっとかという思い。

 これらについては、ブログの上部についている検索窓に、
オブジェクト指向プログラミング
関数型プログラミング
Lisp
などを入れて、検索してみてください。

■■■Modern C++速習勉強法
 Modern C++を勉強しないといけない人、古いC++やCの頭の人に向けて、これまで書いたことなどを、改めてまとめました。参考にしてください。
 今なら、次のやり方で、てっとりばやくModern C++が身につくだろうと思います。もちろん、保証はしませんが。

https://www.amazon.co.jp/exec/obidos/ASIN/4798150231/showshotcorne-22/
独習C++ 新版 単行本 – 2019/11/11
επιστημη (監修), 高橋 航平 (著)
を、数日でざっと読んで、全体像や少し詳しい概略をつかむ。

https://www.amazon.co.jp/exec/obidos/ASIN/4873118697/showshotcorne-22/
Modern C++チャレンジ ―C++17プログラミング力を鍛える100問 単行本(ソフトカバー) – 2019/2/14
Marius Bancila (著), 島 敏博 (監修), 黒川 利明 (翻訳)
の問題を自分で手を動かして解く。
 速習を目指すなら、最初から解答を読んでもいいです。
 まず、問題、解答、解説を読んで、どういう方針でどういう機能を使って問題を解いているかを理解する。
 次に、問題だけをもう一度見て、解答をコピペせずに、実際に自分でコードを書くことが重要です。最初はコンパイルすらまともにできないかもしれませんが、動かして動きを理解することが重要です。
 とにかく手を動かして、実際にコードを書いてみて、いっぱい失敗しながら、身体に感覚を覚えさせるのが大切です。
 座学で頭で理解したつもりでは、いいソフトは書けません。ソフトに限らず、どんな分野でも言えることですが。
 速習なら、本書の全部をやる必要はありません。
https://www.oreilly.co.jp/books/9784873118697/
Modern C++チャレンジ
―C++17プログラミング力を鍛える100問
Marius Bancila 著、黒川 利明 訳、島 敏博 技術監修
に目次があります。
2章 言語機能
3章 文字列と正規表現
4章 ストリームとファイルシステム
6章 アルゴリズムとデータ構造
をやれば、いっぱしのModern C++プログラマです。
 その後、時間があれば、
8章 デザインパターン
7章 並行処理
をやり、残りは、お好きにという感じ。
 Visual Studo 2019や2022なら、本書のコードは、外部ライブラリを使っていないものは、全部、動くはずです。boostなど外部ライブラリを使っている部分は、自分でインストールして動かしてください。
 Visual StudioのC++がないときは、オンラインコンパイラの
https://wandbox.org
で試すといいです。
 ここは、C++20までコンパイルでき、GCCとCLangが使え、boostライブラリも使えます。
 問題や解答でわからないことがあったら、「独習C++」や「ポケットリファレンス」で調べます。
 改訂第4版にはC++20の解説も入っています。
https://www.amazon.co.jp/exec/obidos/ASIN/4297119994/showshotcorne-22/
[改訂第4版]C++ポケットリファレンス (POCKET REFERENCE) 単行本(ソフトカバー) – 2021/4/15
高橋 晶 (著), 安藤 敏彦 (著), 一戸 優介 (著), 楠田 真矢 (著), 湯朝 剛介 (著)
https://www.amazon.co.jp/exec/obidos/ASIN/B092LVDYFC/showshotcorne-22/
[改訂第4版]C++ポケットリファレンス Kindle版
高橋 晶 (著), 安藤 敏彦 (著), 一戸 優介 (著), 楠田 真矢 (著), 湯朝 剛介 (著) 形式: Kindle版

 ポケットリファレンスがないときは、オンラインの
https://cpprefjp.github.io
cpprefjp - C++日本語リファレンス

https://ja.cppreference.com/w/
C++リファレンス
で検索します。非常に詳しい解説があります。

■早くModern C++にスキルアップすべき人
 Modern C++としてC++11が登場して10年以上が経っているのに、いまだに古いC++の書き方、もっといえば、大昔の若い頃に身につけたCの書き方でプログラムを書いている人がいます。
 C++17やC++20では、Cや古いC++より、はるかに安全で高速なコードが簡単に書けるようになっています。
 たとえば、次に述べる人は、早くModern C++, それも最低でもC++17、できればC++20で書けるようにしてください。

・nullptrを使わずNULLを使っている
・autoによる型推論を使わず、手で型を書いている
・コンパイル時に値を計算してしまうconstexprを使わず、定数を#defineで定義している
 C++14以降は、constexprで関数も呼べるので、実行時に定数を定義するconstすら使う理由があまりなくなってきた。
 コンパイル時に値を確定するので、実行スピードが速くなる。コンパイル時間は長くなるだろうが。
 ぼくはクラスのコンストラクタさえ、constexpr化ができるのは、知らなかった。
 実際、いまや多くのSTL(標準テンプレートライブラリ)の中身がconstexpr化されている。
https://qiita.com/KRiver1/items/ef7731467b5ca83850cb
C++、constexprのまとめ
https://cppmap.github.io/standardization/cpp20/#array-constexpr-p1023r0-p1032r1
<array> ヘッダのすべての関数が constexpr に
https://cppmap.github.io/standardization/cpp20/#complex-constexpr-p0415r1
<complex> ヘッダの関数の constexpr 対応を強化
https://cppmap.github.io/standardization/cpp20/#utility-algorithm-constexpr-p0202r3-p0879r0
<utility>, <algorithm> の多くの関数が constexpr に
・スマートポインタを使わず、生のポインタを使っている
・make_unique, make_sharedを使わず、new/deleteを使っている
・pair, tuple, 構造化束縛を使ってない
 pair, tuple, 構造化束縛で、多値を返す関数が簡単に作れて、使える
https://cpprefjp.github.io/lang/cpp17/structured_bindings.html
構造化束縛
・std::vectorを使わず、配列を使っている
・std::unordered_map, std::unordered_setを使わず、std::map, std::setを使っている
・ラムダ式を使ってない
・範囲forを使ってない
・手でループ変数の更新をしている
・ifやswitchで変数の初期化ができるのに使ってない
https://cpprefjp.github.io/lang/cpp17/selection_statements_with_initializer.html
if文とswitch文の条件式と初期化を分離
https://cpprefjp.github.io/lang/cpp20/range-based_for_statements_with_initializer.html
初期化式をともなう範囲for文
 変数のスコープは狭いほど、人間にとってわかりやすく、バグが入りにくい。
 C++やJavaでは、変数は使うところで宣言、定義できるのに、昔のCのやり方しか知らず、関数定義の最初にたくさん変数を並べる腐ったコーディングは止める。
・STLのコンテナとアルゴリズムを使ってない
 これも手でループを回しているのと似た話。
・string_viewを使ってない
 svリテラルで、簡単にstring_viewを作れるようになってるから、もっと使ってください。
https://cpprefjp.github.io/reference/string_view/basic_string_view/op_sv.html
svリテラル
・コンテナ処理にイテレータを使っていて、rangesを使ってない(C++20)
 C++20ではrangesとviewが入って、string_view以外にコンテナにもviewが使えるようになった。非常に簡潔に処理が書け、しかもviewで要素のコピーをせず遅延評価するので実行スピードも速くなる。
 Unixのシェルで、フィルタとパイプを組み合わせたような、こんな書き方ができる。
for (auto x : std::views::iota(0)
| std::views::filter([](auto x) { return x % 2 == 0; })
| std::views::transform([](auto x) { return x * x; })
| std::views::take(4))
std::cout << x << ','; // output: 0,4,16,36,
https://cpprefjp.github.io/reference/ranges.html
ranges
https://cpprefjp.github.io/reference/ranges/view.html
view
 rangesとviewについては、
https://techbookfest.org/product/5134506308665344?productVariantID=5896161179205632
C++20 ranges
Cryptomycocolacales
電子版
¥500
が、よくまとまっています。たったの500円。
・クラスや構造体で、コピーコンストラクタやコピー代入演算子を定義しているのに、ムーブコンストラクタやムーブ代入演算子を定義していない
https://ja.cppreference.com/w/cpp/language/rule_of_three
3/5/0のルール(The rule of three/five/zero)
・関数に noexcpt, const, override, finalを付けてない
・Cのやり方で、関数の入力パラメータにポインタを渡している。ほとんどの場合、constな参照渡しでよい。
・RVO, NRVO, ムーブセマンティクスがあるのに、値を返す関数にしてない。
 RVO, NRVO, ムーブセマンティクスによって、大きなクラスや構造体を値返ししても、無駄なコピーは発生しない。RVOやNVOがだめなときは、ムーブするのでコピーは発生しない。よって、出力パラメータとして参照を渡すのは、多くの場合、不要。
 古い記事なのでC++17からはRVOが必須になったことは述べてないけれど。
https://isoparametric.hatenablog.com/entry/20091219/1261192152
NRVO(RVO)とMove Semantics
https://www.bit-hive.com/articles/20190506
NRVO(Named Return Value Optimization)が適用されたか判定するマクロ
https://cpprefjp.github.io/lang/cpp17/guaranteed_copy_elision.html
値のコピー省略を保証
https://zenn.dev/yae/articles/6a7d6166cbc7d8
C++ モダンな書き方
には、「C++ Core Guidelines」での関数のパラメータに関する話が少し出ています。参考にしてください。

 ほかにもいっぱいあると思うけど、上記のような人は、
https://www.amazon.co.jp/exec/obidos/ASIN/B0787CPFJ2/showshotcorne-22/
モダンな C++ をはじめよう 第2版: C++98/03 から C++11/14/17 へ Kindle版
Programming Place (著) 形式: Kindle版
¥400 Kindle 価格
を読んでModern C++の入門をしてください。たったの400円。
 いまだにCの癖が抜けない人は、
https://www.amazon.co.jp/exec/obidos/ASIN/B08F23PDX5/showshotcorne-22/
Cの延長としての C++ 入門 第2版 Kindle版
Programming Place (著) 形式: Kindle版
¥400 Kindle 価格
を読んで、C++の入門をしてください。これもたったの400円。

 驚くべき本があって、それは、
C++11/14/17プログラミング
https://www.amazon.co.jp/exec/obidos/ASIN/B089QSKKFW/showshotcorne-22/
C++11/14/17プログラミング Kindle版
小松 正樹 (著) 形式: Kindle版
¥300 Kindle 価格
 この本、4300ページもあって、たったの300円。
 詳しくは、
https://iiyu.asablo.jp/blog/2023/02/20/9564159
Programming Place「モダンな C++ をはじめよう 第2版」「Cの延長としての C++ 入門 第2版」、Nicolai M. Josuttis「C++ Move Semantics - The Complete Guide」、小松正樹「C++11/14/17プログラミング」
を読んでください。

関連:
https://iiyu.asablo.jp/blog/2023/02/20/9564159
Programming Place「モダンな C++ をはじめよう 第2版」「Cの延長としての C++ 入門 第2版」、Nicolai M. Josuttis「C++ Move Semantics - The Complete Guide」、小松正樹「C++11/14/17プログラミング」

■さらに深くC++を勉強するなら
 さらに深くC++を勉強するなら、次の2冊は必読。

https://www.amazon.co.jp/exec/obidos/ASIN/4873117364/showshotcorne-22/
Effective Modern C++ ―C++11/14プログラムを進化させる42項目 大型本 – 2015/9/18
Scott Meyers (著), 千住 治郎 (翻訳)
 電子書籍は、オライリー・ジャパンにあります。
https://www.oreilly.co.jp/books/9784873117362/
Effective Modern C++
―C++11/14プログラムを進化させる42項目
Scott Meyers 著、千住 治郎 訳

https://www.amazon.co.jp/exec/obidos/ASIN/4814400454/showshotcorne-22/
C++ソフトウェア設計 ―高品質設計の原則とデザインパターン 単行本(ソフトカバー) – 2023/10/14
Klaus Iglberger (著), 千住 治郎 (翻訳)
 電子書籍は、オライリー・ジャパンにあります。
https://www.oreilly.co.jp/books/9784814400454/
C++ソフトウェア設計
―高品質設計の原則とデザインパターン
Klaus Iglberger 著、千住 治郎 訳

■Modern C++のオンラインリソースや本。
https://www.slideshare.net/potimarimo/javacc
Javaとかc#とか最近の言語使いのためのc++入門
は、軽くModern C++の紹介。

https://zenn.dev/dec9ue/books/8c59757478a547
おっさんのためのModern C++入門ガイド
は、一番お薦め。ツボがうまく解説してあります。
 テンプレート関係グはばっさり省略。それらはライブラリを書くプログラマが精通しておくべきことで、ライブラリを使うプログラマは、あまり必要ない、特にテンプレートメタプログラミンは必要ない、という判断。

https://www.slideshare.net/Reputeless/c11c14
ゲーム開発者のための C++11/C++14
は、最初のほうは、ゲームの世界なので、正規分布や乱数の話が出てくるが、途中からもっと一般的なModern C++の解説やノウハウになる。
 コンテナとアルゴリズムの話も出ている。コンテナの処理は、古いfor文はもちろん、範囲forでさえやめて、アルゴリズムとラムダを使った方が関数型プログラミング的で、書くのも簡単でバグを入れる可能性は低く、すっきりしてわかりやすい。
 ゲームの世界では、物理メモリの薄いラッパーであるstd::arrayかもしれないが、ほとんどの場合、std:vectorの方が使いやすい。

https://www.slideshare.net/ShintarouOkada/boost19-effective-modern-cc-core-guidelines
Boost.勉強会#19東京 Effective Modern C++とC++ Core Guidelines
 Effective Modern C++は、中級、上級になるには必読。
 C++ Core Guidelinesは、こう書くのがいい、こう書いてはダメというのを集めたもの。膨大なので、この人がいいと思うものだけ取り上げている。

https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
C++ Core Guidelines
April 10, 2022
 タイトルのみの日本語訳だけど。
https://qiita.com/tetsurom/items/322c7b58cddaada861ff
C++ Core Guidelines タイトル日本語訳
投稿日 2019年10月03日 更新日 2022年05月07日

https://learn.microsoft.com/ja-jp/cpp/code-quality/using-the-cpp-core-guidelines-checkers?view=msvc-170
Use the C++ Core Guidelines checkers
は、MSが作ったC++ Core Guidelinesチェッカー。

https://ezoeryou.github.io/cpp17book/index.html
江添亮の詳説C++17
は、大変な労作。C++17の全機能の解説。書籍にもなってる。
https://www.amazon.co.jp/exec/obidos/ASIN/4048930605/showshotcorne-22/
江添亮の詳説C++17 単行本 – 2018/3/9
江添 亮 (著)
https://www.amazon.co.jp/exec/obidos/ASIN/B07B8T1F4R/showshotcorne-22/
江添亮の詳説C++17 (アスキードワンゴ) Kindle版
江添 亮 (著) 形式: Kindle版

https://zenn.dev/yae/articles/6a7d6166cbc7d8
C++ モダンな書き方
 ムーブセマンティクスが入ったことで、数値やブール値など以外でも、出力パラメータを使わず、関数の戻り値としてオブジェクトを値として返すことがコストなしでできるようになったことの説明があります。
 さらにいえば、コンパイラがRVOやNRVOという最適化をするので、ムーブ演算を定義してないクラス・構造体でも、値を返すことが効率的になった話もあります。特に、RVOに関しては、C++17からコンパイラのサポートは必須になっています。
 戻り値と引数の選択基準の表が出てくるが、それは
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines
C++ Core Guidelines
April 10, 2022
からの引用。範囲for文の変数の使い分け、書き方は、わかりやすいでしょう。
 戻り値、引数の使い分けと書き方には、
https://zenn.dev/dec9ue/books/8c59757478a547
おっさんのためのModern C++入門ガイド
https://zenn.dev/dec9ue/books/8c59757478a547/viewer/83003e
ムーブセマンティクスと右辺値
にも使い分けがあって、そっちのほうがわかりやすいと思います。

 この手のサンプル例にあるラムダ式のキャプチャは、簡単のために、[=]や[&]を使って、スコープ内で見える変数全部を対象にしていますが、これはいい書き方ではない。
 スコープ内で見える変数全部をコピーするか参照するというのは、引数なしの関数で、グローバル変数を直接見たり書き換えたりするのと同じだから。
 普通の関数を書く時を考えれば、
int x = 10, y = 20;
int add() { return x + y; }
ではなく、
int add(int x, int y) { return x + y; }
と書くのが推奨される書き方

 Modern C++は、スマートポインタ、ムーブセマンティクス、ラムダ式が身につけば、中級です。
 半世紀前のLispの時代から、ラムダ式は便利すぎるし、関数型プログラミングの優秀性が知られるようになってから、Scala, Java, C#やらいろんな言語に入るようになった。やっとModern C++でまともに使えるようになってきたので、、どんどん使ってください。
 ラムダ式、変数のキャプチャ、クロージャについては、次を参照。
https://cpprefjp.github.io/lang/cpp11/lambda_expressions.html
ラムダ式

https://theolizer.com/cpp-school2/cpp-school2-22/
第22回 関数オブジェクトとラムダ式
https://theolizer.com/cpp-school2/cpp-school2-23/
第23回 ラムダ式のメンバ変数≒キャプチャ
https://theolizer.com/cpp-school2/cpp-school2-24/
第24回 高性能だがちょっと危険な参照キャプチャ
https://theolizer.com/cpp-school2/cpp-school2-25/
第25回 ローカルな関数テンプレート的なジェネリック・ラムダ

 キャプチャーの注意。
https://cpplover.blogspot.com/2010/06/lambda_15.html
江添亮のブログ lambdaでデータメンバーのキャプチャー
2010-06-15

 キャプチャのガイドラインは、
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-reference-capture
F.52: Prefer capturing by reference in lambdas that will be used locally, including passed to algorithms
https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#Rf-value-capture
F.53: Avoid capturing by reference in lambdas that will be used non-locally, including returned, stored on the heap, or passed to another thread
を参照。

 次は、古いC++の解説がよかったサイトですが、新C++編として書き直している途中です。なかなかわかりやすい。でも、まだ、Modern C++全体からすると、少ししか書かれていないのが残念。でも一読の価値ありです。
https://programming-place.net/ppp/contents/cpp2/index.html
トップページ | Programming Place Plus 新C++編

■NHKのデタラメな番組、NHK「ノーナレ」「変かんふうふ」について:
http://iiyu.asablo.jp/blog/2023/12/30/9647029
NHK「ノーナレ」「変かんふうふ」は、仮名漢字変換の歴史を改竄・捏造し、先人の功績を無視し、名誉を傷つけたフェイクニュース番組
http://iiyu.asablo.jp/blog/2023/12/30/9647026
仮名漢字変換の歴史改竄・捏造番組、NHK「ノーナレ」「変かんふうふ」。元東芝の天野真家さんも産経新聞に怒りのインタビュー。NHKの末廣信吾、佐々木麗、篠田洋祐、本間一成は謝罪訂正し、配信も中止せよ
https://iiyu.asablo.jp/blog/2022/05/18/9491639
NHK「ノーナレ」、仮名漢字変換の歴史、浮川夫妻が発明は大嘘。管理工学研究所の我々が先。あのノーナレは歴史を改竄、捏造した歴史修正主義トンデモ悪質番組