В 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 ++ 0x delete
будет хорошим способом для достижения этой цели.По сути, я хочу, чтобы эта функция не работала с любым типом, который не относится к трем типам Unicode char
, но я все же хочу использовать преимущества шаблонов функций, которые позволяют мне обобщать типы и избегатьповторяющийся код.
Как лучше всего решить эту проблему?Возможно ли это?