4
からタイプを決定します。私はこれを行うことがしたい非型テンプレートパラメータ
template <typename T x>
struct Test {
T val{x};
};
int main() {
Test<3> test;
return test.val;
}
私は質問hereに答えたと私は次のテンプレートを使用します。
template <typename T, typename V, typename VP, V(T::*getf)(), void (T::*setf)(VP)>
を
各タイプは手動で指定します。しかし、T
,V
、VP
は既にメンバ関数getf
とsetf
の型へのポインタに含まれているため、重複しています。
しかし、私は唯一の
template <V(T::*getf)(), void (T::*setf)(VP)>
または
template <V(T::*getf)(), void (T::*setf)(VP), typename T, typename V, typename VP>
でテンプレートをしようとした場合、その後のタイプを決定することができません。
次私は専門を試してみました:
使用typedef Accessor<
decltype(&TargetClass::GetFoo),
decltype(&TargetClass::SetFoo)> fooAcessor;
場合のタイプのすべてを決定します。しかし、今、私は、もう唯一のタイプのポインタを持っていない
template <typename T, typename T2>
struct Accessor;
template <typename V, typename T, typename VP>
struct Accessor <V(T::*)(), void (T::*)(VP)>
。
タイプをテンプレート以外のパラメータから自動的に判別できるようにテンプレートを書き込む方法はありますか?
@Muscampester He's Barry、魔法のC++ yorkshire! :D – Quentin
@Quentin Ahem、[Westie](https://en.wikipedia.org/wiki/West_Highland_White_Terrier)! – Barry
おっと。私は犬のことを知らない: - でもねえ、魔法があり、C++があり、それは犬だよ、それはわずか25%の失敗のようだ! – Quentin