Re: [問題] 樣版設計 - 只接受特定幾種類別該怎設計?
以泛型設計的觀念來說,
如果你真的要擋住某些型別,我強烈建議你用黑名單,
因為白名單的作法會擋掉未來太多的可能性,
你沒辦法放 complex,沒辦法放 fractor,沒辦法放 BigNum,
你的使用者會想要放一堆他們自訂的,你連想都沒想過的 class 進去。
既然你設計這個泛型函數的這個當下沒想過那些 class,
當然你也不可能把他寫進白名單。
至於實作上要怎麼簡單的作一份會有 compile time error 的黑名單:
最好的作法是你在 function 內部用 Loki::TypeList 列出你的黑名單,
然後根據檢索的結果 SelectType 檢索出一個 compile time 整數,
如果要具現的類別在黑名單 type list 裡面,那這個整數要是 0,
你可以根據這個整數進行 static assertion 來作到 compile time error。
這個是最優雅而且是在語言規格內的解法,但是要會的東西比較多。
懂 type list 的話上面就很容易懂。
不懂的話 type list 的話,
那我建議你用 macro 或是 code generator 直接把要擋掉的 class 生出來,
marco 是最簡單的解法 O_O
最後是說,以這個矩陣相加的 case 來講,
老實說我不覺得你應該去擋任何型別………這真的很奇怪………
我不知道你在想什麼
--
To iterate is human, to recurse, divine.
遞迴只應天上有, 凡人該當用迴圈. L. Peter Deutsch
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.105.106
→
05/21 09:53, , 1F
05/21 09:53, 1F
→
05/21 09:55, , 2F
05/21 09:55, 2F
→
05/21 19:20, , 3F
05/21 19:20, 3F
討論串 (同標題文章)
完整討論串 (本文為第 3 之 3 篇):
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章