実践C++応用講座
第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++応用講座
こんにちは。田原です。 テンプレートの基本的な部分は概ね網羅しつつありますので、そろそろ当応用講座も終盤です。 さて、今回は可変長引数のテンプレートを解説します。再帰定義を使う場合も多く使い方は結構難しいですが、結構便利 …
第13回 関数テンプレート・パラメータの便利な特殊性
2018年1月7日 実践C++応用講座
明けましておめでとうございます。本年もよろしくお願い申し上げます。 お久しぶりの田原です。去年から引き続いてテンプレートの解説を続けますね。 さて、今回は関数テンプレートのパラメータの型推論について少し補足します。関数テ …
第12回 ルールは単純だけど意外にややこしいメンバ・テンプレート
2017年12月24日 実践C++応用講座
こんにちは。田原です。 クラスやクラス・テンプレートの中で定義するテンプレートのことをメンバ・テンプレートと呼び、関数テンプレートとクラス・テンプレートがあります。そして、クラス・テンプレートの中で定義するクラス・テンプ …