我有一个“设置”数据类型:
template <class V>
struct Set {
void add(const V& value) {}
};
我想写一个顶级函数版本Set::add
。
template <class V>
void add(const Set<V>& set, const V& value) {}
这不适用于字符串文字:
Set<const char*> set;
const char* val = "a";
set.add(val); // ok
set.add("a"); // ok
add(set, val); // ok
add(set, "a"); // ERROR
add<const char*>(set, "a"); // ok
错误消息(g++ 4.2.4):
no matching function for call to ‘add(Set<const char*>&, const char [2])’
"a"
看起来它与has typeconst char[2]
和 not的事实有关const char*
。有人知道如何让它工作吗?