在 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);
我希望能够让 T 为 char、char16_t 和 char32_t 工作,但不能为任何其他类型工作。我在想 C++0xdelete
将是实现这一目标的好方法。基本上,我希望能够防止此函数使用不是三种 Unicodechar
类型之一的任何类型,但我仍然希望获得函数模板的好处,它允许我概括类型并避免重复代码。
解决这个问题的最佳方法是什么?是否可以?