[問題] 取得template prototype
有點鑽牛角的問題,不過也是實際遇到的問題。
這裡 template 用途主要是拿來取代 C 裡之 function pointer,
問題整理後之示意 code 如下
typedef int (*ptr1)(int, int);
int add1(int a, int b){return a+b;}
template<typename T, typename Func>
T Execute(Func ptr)
{
return ptr(1,1); /* 等一下要問這裡 */
}
執行時變
cout << Execute<int, ptr1>(add1) << endl;
今天我要多加一份 adder
typedef double (*ptr2)(double, double, double);
double add2(double a, double b, double c){return a+b+c;}
而在呼叫時,我希望直接可以仿前面的方式
cout << Execute<double, ptr2>(add2) << endl;
但這樣 Execute 裡就不能寫 return ptr(1,1),
而是要寫 return ptr(1.0, 1.0, 1.0)。
類似這情形況,不知目前是否有什麼方法可處理掉?
目前想到的可能是必須去解 template function 裡之 prototype < 不會解 >,
解出來後若 prototype 複雜,應也是一項大工程 < 一堆 if-else >。
抑或,以這種情形而言,根本就不適合用 template ?
用到幾個 function 就人工逐一展開?
先謝謝各位不吝指導先。
--
我知道 ~ 但別說出來 ,
說出來讓人感到特別難過...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.195.165.40
→
03/13 22:34, , 1F
03/13 22:34, 1F
推
03/13 22:56, , 2F
03/13 22:56, 2F
→
03/13 22:57, , 3F
03/13 22:57, 3F
→
03/13 22:58, , 4F
03/13 22:58, 4F
→
03/13 22:59, , 5F
03/13 22:59, 5F
推
03/13 23:01, , 6F
03/13 23:01, 6F
→
03/13 23:02, , 7F
03/13 23:02, 7F
→
03/13 23:05, , 8F
03/13 23:05, 8F
→
03/13 23:05, , 9F
03/13 23:05, 9F
→
03/13 23:07, , 10F
03/13 23:07, 10F
→
03/13 23:07, , 11F
03/13 23:07, 11F
→
03/13 23:21, , 12F
03/13 23:21, 12F
→
03/14 00:09, , 13F
03/14 00:09, 13F
推
03/14 04:50, , 14F
03/14 04:50, 14F
→
03/14 06:31, , 15F
03/14 06:31, 15F
推
03/14 09:23, , 16F
03/14 09:23, 16F
→
03/14 09:58, , 17F
03/14 09:58, 17F
推
03/14 10:36, , 18F
03/14 10:36, 18F
→
03/14 10:37, , 19F
03/14 10:37, 19F
推
03/14 10:51, , 20F
03/14 10:51, 20F
→
03/14 10:51, , 21F
03/14 10:51, 21F
→
03/14 17:03, , 22F
03/14 17:03, 22F