Re: [問題] 無法推導出的 function template ?
不好意思好像推文很難說清楚
template<int N>
int test(int x1, ...) { return N; }
如果我指定了 N 變成
template<>
int test<3>(int x1, ...) { return 0; }
是可以的
可是
template<>
int test<3>(int x1, int x2, int x3, ...) { return 0; }
// 這是我想要的次佳方案
或者
template<>
int test<3>(int x1, int x2, int x3) { return 0; }
// 這是我想要的最佳方案
都是不行。
感覺好像只能透過重載 test()
但是這樣使用者有無指定會變成呼叫不同函數
請問是否有方法解決呢?
再次感謝~
※ 引述《applecool (noOneKnows)》之銘言:
: 開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
: VC++ 6.0
: 問題(Question):
: 請問如果是
: template<size_t N>
: int test(int x1, ...) {
: 想告訴有 N 個 input, x1, ..., xN
: }
: 這樣是 OK 的
: 但如果某特定個數 input (例如 N = 3) 的 Specialization
: 請問要怎麼寫才好呢 (雖然想到一大堆替代方案...)
: 希望大家不吝指教
: 感恩
※ 編輯: applecool 來自: 123.110.247.44 (03/20 21:45)
→
03/20 21:42, , 1F
03/20 21:42, 1F
→
03/20 21:43, , 2F
03/20 21:43, 2F
因為這樣會變成重載
如果使用者不指定的話不會自動推導參數,而會直接使用 non-template test()
int test( int x1, int x2, int x3) { return 0; }
比如說
test<3>(1, 2, 3) 回傳 3
test(1, 2, 3) 就會回傳 0 了
其實我有想到很多的替代方案
我只是很好奇 VC++ 6.0 能不能達到這樣的功能
謝謝喔~
※ 編輯: applecool 來自: 123.110.247.44 (03/20 21:51)
→
03/20 21:51, , 3F
03/20 21:51, 3F
以我實際應用的例子有很大好處,但是我簡化成這問題
以這個簡化過的範例來說確實沒有任何好處 ^______^
※ 編輯: applecool 來自: 123.110.247.44 (03/20 21:54)
→
03/20 22:29, , 4F
03/20 22:29, 4F
感謝
我也想到很多沒有損失的替代方案
只是想知道是否有可能達到這樣的目的 (vc6)
※ 編輯: applecool 來自: 123.110.247.44 (03/20 22:38)
→
03/20 22:42, , 5F
03/20 22:42, 5F
→
03/20 22:43, , 6F
03/20 22:43, 6F
→
03/21 00:01, , 7F
03/21 00:01, 7F
→
03/21 00:25, , 8F
03/21 00:25, 8F
→
03/21 00:32, , 9F
03/21 00:32, 9F
→
03/21 00:33, , 10F
03/21 00:33, 10F
→
03/21 00:52, , 11F
03/21 00:52, 11F
→
03/21 00:53, , 12F
03/21 00:53, 12F
→
03/21 00:53, , 13F
03/21 00:53, 13F
→
03/21 00:54, , 14F
03/21 00:54, 14F
→
03/21 00:55, , 15F
03/21 00:55, 15F
→
03/21 00:55, , 16F
03/21 00:55, 16F
→
03/21 01:32, , 17F
03/21 01:32, 17F
→
03/21 02:21, , 18F
03/21 02:21, 18F
→
03/21 02:22, , 19F
03/21 02:22, 19F
→
03/21 03:19, , 20F
03/21 03:19, 20F
→
03/22 00:00, , 21F
03/22 00:00, 21F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章