yohhoyの日記

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

2022-08-01から1ヶ月間の記事一覧

MC Hammer in C++ Standard

プログラミング言語C++標準規格のサンプルコードでビートを刻むMCハマー。 "U Can't Touch This" ( 'ω' و(و♪ ƪ( 'ω' ƪ )♪ template<ranges::constant_range R> void cant_touch_this(R&&); vector<char> hammer = {'m', 'c'}; span<char> beat = hammer; cant_touch_this(views::as_const(beat)); /</char></char></ranges::constant_range>…

std::shared_ptr型と->*演算子とstd::invoke関数

C++

C++標準ライブラリのスマートポインタ型std::shared_ptr<T>では->*演算子オーバーロードを提供しない(注:->はあるよ)。 #include <memory> struct X { int mf(); }; // メンバ関数ポインタ int (X::*pmf)() = &X::mf; // (通常)ポインタ型 X* p = new X; p->mf(); //</memory></t>…

std::generator<T/T&&/T&/const T&>

次期C++2b(C++23)標準ライブラリのコルーチンサポート型std::generator&ltRef>(→id:yohhoy:20220801)の第1テンプレートパラメータRefと、オブジェクトのコピー/ムーブの関係性についてメモ。まとめ: 利用側にconst参照を提供:const-lvalue参照const T&…

std::generator<R>

次期C++2b(C++23)標準ライブラリに追加されるstd::generator<R>クラステンプレートについてメモ。提案文書P2502R2よりコード引用:*1 // C++2b #include <functional> #include <generator> #include <range> #include <utility> std::generator<int> fib() { auto a = 0, b = 1; while (true) { co_yield st</int></utility></range></generator></functional></r>…