C++

C++2a MSVCのConcepts-TSを試す

C++ テクニック シリーズ tl;dr Visual Studio 2017 version 15.3 でConcepts-TS(minimal)が実装されたので試した。 が、なにも実装されてないようなもんだった。 遊 […]

C++

C++17 Constexpr Lambda

C++17 テクニック #5 tl;dr C++17からラムダ式がconstexprの文脈で使えるようになった。 static_assertの中で使ったりできるようになった。 仕様 ラムダ式をconstexprの文脈で使 […]

C++

C++17 Parallel STL

C++17 テクニック #4 tl;dr C++17から並行並列の新しいSTLが追加される。 これにより、並列化をコンパイラに丸投げできるようになり、可搬性も上がる。 記憶によれば、algorithmヘッダとnumeri […]

C++

Emulate Scoped Enum in C++03

C++03 テクニック #3   tl;dr C++03において、C++11のScoped Enumをエミュレートする苦肉の策。 最近、C++03でライブラリを書いていた。 どうしてもscoped enumが欲 […]

C++

C++17 std::invoke

C++17 テクニック #3 tl;dr std::invokeは以下の第一引数に 第二引数以降をなんかいい感じに適用して呼び出しをしてくれる。 関数(ポインタ) 関数オブジェクト メンバ関数ポインタ メンバ変数ポインタ […]

C++

C++17 Detection Idiom

C++17 テクニック #2   tl;dr コンパイル時に型特性を判定してクラスの実体化を選択する方法。 C++11でも普通にできるが、C++17でstd::void_tが追加されたので。 Qiitaの記事で […]

C++

C++17 std::invoke_result

C++17 テクニック #1 tl;dr std::result_ofは非推奨になったので、 std::invoke_resultを使いましょう。 そもそも、関数型をテンプレート引数に持つことに問題が多過ぎる。 配列がポ […]

C++

C++03 タグディスパッチ

C++03 テクニック #2 tl;dr タグディスパッチとは クラスのメンバ型名を関数の引数にとることで、 実装を呼び分けるテクニックである。   コンテナアルゴリズムの最適化に使われたりとか。   […]