C++ソフト開発ツールのセオライザー
技術解説

年別アーカイブ: 2017年

第12回 ルールは単純だけど意外にややこしいメンバ・テンプレート

こんにちは。田原です。 クラスやクラス・テンプレートの中で定義するテンプレートのことをメンバ・テンプレートと呼び、関数テンプレートとクラス・テンプレートがあります。そして、クラス・テンプレートの中で定義するクラス・テンプ …

第11回 decltypeとstd::declval

こんにちは。田原です。 今回は、ちょっと複雑なテンプレートを書く時に便利なdecltypeとstd::declvalです。decltypは既にちらほらつかってますが受け取った式の型を返します。declvalはその逆っぽい …

第10回 メンバの有無を判定するテンプレート

こんにちは。田原です。 前回までで テンプレートの明示的特殊化と部分的特殊化とオーバーロード(まとめて表現できる言葉が欲しいですね)を使って必要に応じて異なるテンプレートを定義する方法を解説しました。今回はその応用を1つ …

第9回 部分特殊化チックな関数テンプレートのオーバーロード

こんにちは。田原です。 前回はクラス・テンプレートの少し高度な部分特殊化の方法を解説しました。今回はこれの関数テンプレート版を解説します。とは言っても関数テンプレートには部分特殊化はありません。その代わりオーバーロードが …

第8回 長い長い部分的特殊化をエイリアス・テンプレートでちょっと短く

こんにちは。田原です。 前回はクラス・テンプレートの部分特殊化で複雑な指定を行うための原理的な話を解説しました。うまく組み合わせることで多少複雑な処理でも記述できます。しかもコンパイル時処理なので超高速(実行時間が0)で …

第7回 部分的特殊化で便利な標準ライブラリの仕組みとその使用例

こんにちは、田原です。 前回は部分的特殊化する際によく使われる部品と、それらを使った部分特殊化の例を1つ上げました。そして、実はC++11以降、標準ライブラリ<type_traits>で非常に多数の便利な部品 …

第6回 部分的特殊化で良く使う部品とSFINAEの利用方法

こんにちは。田原です。 クラス・テンプレートの部分特殊化や関数テンプレートのオーバーロードはある程度範囲の型に対してテンプレートを定義します。その「範囲」をかなり自由に指定することができます。今回はそれによく使われる幾つ …

第5回 部分的特殊化とオーバーロード

こんにちは。田原です。 前回は明示的特殊化を解説しました。明示的特殊化(完全特殊化)は型を確定してプライマリー・テンプレートとは異なる振る舞いを定義する機能でした。部分的特殊化は対応する型を完全に決めるのではなく、ある程 …

第4回 明示的特殊化とテンプレート用語の解説

こんにちは。田原です。 前回は明示的実体化について解説しました。今回は明示的特殊化について解説します。ちょっと似た用語ですので混乱しないようにして下さい。「実体化」と「特殊化」の違いです。またC++規格書は「特殊化」とい …

第3回 分割コンパイルとテンプレートの「明示的」実体化

こんにちは。田原です。 前回、前々回とテンプレートは通常は暗黙的に実体化される話をしました。マクロでクラス・テンプレートっぽいことをする場合は「明示的実体化のようなもの」が必要ですが、テンプレートでは省略できます。しかし …

1 2 3 6 »
PAGETOP
Copyright © Theoride Technology Co.,Ltd. All Rights Reserved.
Powered by WordPress & BizVektor Theme by Vektor,Inc. technology.