template<typename T> struct A
{
static T x(T, T) { }
static T y(T, T) { }
};
template<typename T> struct B
{
static T x(T, T) { }
static T y(T, T) { }
};
struct Dispatcher
{
template<template<typename> class TC, ??? TStaticFunc,
typename T1, typename T2>
static std::common_type_t<T1, T2> call(T1 mI, T2 mJ)
{
return TC<std::common_type_t<T1, T2>>::*TStaticFunc(mI, mJ);
}
};
Dispatcher::call<A, x>(12.f, 5);
Dispatcher::call<B, x>(1.f, 51);
Dispatcher::call<A, y>(2.f, 25);
Dispatcher::call<B, y>(5.f, 3);
是否可以創建類似Dispatcher::call
的模板化函數? 我想分別傳遞類類型和靜態函數名稱。傳遞靜態成員函數作爲模板參數
或正在通過A<..:>::x
實現這種調度的唯一可能方式?
怎麼樣'Dispatcher :: callX (12.f,5);'?這可以接受嗎?你有多少'x,y,...'功能? – PiotrNycz
即使你將'???'替換爲'??? TStaticFunc'編譯器不知道你是在實例化Dispatcher :: call 時意味着什麼'x'。編譯器沒有'x' – borisbn