【发布时间】:2015-09-08 23:42:09
【问题描述】:
我有一个带有一个模板参数“T”的模板类。我希望这个类有一个构造函数,但如果 T 是 char 只是有一个额外的构造函数“const char *”作为参数。
template <typename T>
class Container
{
public:
// Construct a container from an array of T's
Container(const T* data, int count);
// For char only construct a container from a nul terminated string
// I *only* want this constructor to be valid when T is char
Container(const T* data);
};
有什么办法可以做到这一点,让我可以做到:-
const char* init = "Hello";
Container<char> data = init;
会编译但是
const int init[] = {1, 3, 4};
Container<int> data = init;
不会编译。
【问题讨论】:
-
使用 SFINAE。你有 c++11 编译器吗?寻找 is_enabled。
-
@Gombat 你的意思是
std::enable_if? -
@CoffeeandCode:是的:D