我想這取決於類型調用不同的功能於一身的模板功能不同的功能,例如:呼籲取決於類型
template<typename T>
T func() {
static_assert(std::is_same<T, int>::value || /* other allowed types */ , "Type not allowed");
T ret {};
// if T == int
funcInt(&ret);
// if T == /* other types */
/* other functions */
}
這種事可能嗎?
我嘗試這樣做:
std::function< int(*T)> query;
if (std::is_same<T, int>::value) {
query = funcInt;
}
,但是這給了我一個錯誤:
error: 'T' does not refer to a value
我認爲這應該是'std :: function < int(T*)>查詢;',假設它是一個指向'T'參數的指針? – Niall 2014-10-10 07:58:27
糟糕!恥辱對我來說,我認爲這是一些奇怪的模板錯誤... – gartenriese 2014-10-10 08:04:02
如果我正確地讀了你,你仍然會有錯誤,因爲你的查詢不能存儲具有不能轉換爲T * – 2014-10-10 08:06:40