第23回 ラムダ式のメンバ変数≒キャプチャ
2018年3月25日 実践C++応用講座
こんにちは。田原です。 ラムダ式は「ある種のクラス(operator()を持っている)」のオブジェクトです。ですので、仕組み上ラムダ式はメンバ変数を持つことができます。そして、C++のラムダ式はそれを実にさりげなく使える …
第22回 関数オブジェクトとラムダ式
2018年3月18日 実践C++応用講座
こんにちは。田原です。 前回、std::tupleの各要素を動的にアクセスする方法を解説しました。しかし、取り出した要素に対して行う処理は別途 関数テンプレートを用意して呼び出しました。しかし、その内容が数行程度の短い時 …
第21回 std::tupleの要素を動的にアクセスする
2018年3月11日 実践C++応用講座
こんにちは。田原です。 前回、std::tupleの要素全てを静的に枚挙してみました。しかし、全てではなく特定の1つを表示したい場合もあるでしょう。また、どの一つを表示するのかコンパイル時ではなくプログラム起動後に決定し …
第20回 std::tupleの要素を静的に枚挙する
2018年3月4日 実践C++応用講座
こんにちは。田原です。 std::tupleには複数の要素を保存できます。ならば、それを枚挙したくなりますね。(私だけ?)しかし、これが意外に難しいです。std::get<i>(タプル)の i はコンパイル時 …
第19回 CRTPを使ってみよう!
2018年2月18日 実践C++応用講座
こんにちは。田原です。 CRTPとはCuriously Recurring Template Patternの頭文字で「奇妙に再帰したテンプレートパターン」とも訳されるようです。「奇妙」は「おかしな」とか「変な」のニュア …
第18回 ユニバーサル参照の落とし穴
2018年2月11日 実践C++応用講座
こんにちは。田原です。 私はChironianのハンドルで良くteratailに書き込みしているのですが、ちょと前にユニバーサル参照に関連した質問がありました。そこで私も初めて気がついたのですが、ユニバーサル参照には意外 …
第17回 続々・可変長引数テンプレート
2018年2月4日 実践C++応用講座
こんにちは。田原です。 今回まで可変長引数テンプレートのパラメータ・パックの加工方法の解説を続けます。「std::forwardを使うケースが多いのでそれも書いた方が良いのでは?」との意見を頂きましたのでこれと、テプレー …
第16回 続・可変長引数テンプレート
2018年1月28日 実践C++応用講座
こんにちは。田原です。 今回はパラメータ・パックの展開方法についてもう少し解説します。1つはパラメータ・パックを加工して展開できるお話、もう一つは再帰を使わないで関数パラメータ・パックを展開する方法です。後者を使えるケー …
第15回 可変長引数のクラス・テンプレート例tuple
2018年1月21日 実践C++応用講座
こんにちは。田原です。 可変長引数テンプレートとして関数テンプレートが良く使われるので、前回は関数テンプレートで解説しました。クラス・テンプレートも可変長引数テンプレートとして使えますので、今回はstd::tupleを使 …
第14回 結構便利な可変長引数テンプレート(Variadic templates)
2018年1月14日 実践C++応用講座
こんにちは。田原です。 テンプレートの基本的な部分は概ね網羅しつつありますので、そろそろ当応用講座も終盤です。 さて、今回は可変長引数のテンプレートを解説します。再帰定義を使う場合も多く使い方は結構難しいですが、結構便利 …