在C++ 0x中,我可以做這樣的事情:的C++ 0x功能刪除 - 刪除所有,但某些類型的
double f(double x) { return x; }
template<class T>
T f(T x) = delete;
爲了防止f()
被稱爲上的任何其他類型的比double
。
我想要做的是類似的,但不完全相同。
我有一個函數在指針數組上運行。例如:
template<class T>
T* some_string_function(T* x);
我希望能夠爲char,char16_t和char32_t使T工作,但不是任何其他類型。我在想,C++ 0x的delete
將是一個很好的方法來實現這一點。基本上,我希望能夠阻止這個函數使用任何不是三種Unicode char
類型之一的類型,但我仍然希望獲得函數模板的優點,這些函數模板允許我概括類型並避免重複代碼。
解決此問題的最佳方法是什麼?可能嗎?
如果你能''刪除'函數模板,然後編寫未刪除的特化,那本來是很好的。但從我從FDIS中看到的情況來看,這是不可能的。 – 2011-06-05 20:25:19