タグ

2017年3月9日のブックマーク (1件)

  • メンバ関数の部分特殊化がしたい - akihiko’s tech note

    C++ でメンバ関数を部分特殊化しようとすると(例えばテンプレートクラスのテンプレートメンバ関数を,ある特定の型について特殊化する),コンパイルエラーとなる.gcc なら "error: invalid use of incomplete type" だとか, "error: enclosing class templates are not explicitly specialized" などのエラーが発生する.しかし,現実には,部分特殊化したいことも多い.そこで,やや強引な解決策を実装してみた. 問題提起 template <typename T1, typename T2> struct TTest { T1 ex() { ... } }; template <> void TTest<void, void>::ex() // OK { ... } これは,メンバ関数 TTest::

    メンバ関数の部分特殊化がしたい - akihiko’s tech note
    OGS
    OGS 2017/03/09
    内部にテンプレート関数オブジェクトを作ってそれを部分特殊化…