gpt4 book ai didi

C++ 模板参数推断和字符串文字

转载 作者:搜寻专家 更新时间:2023-10-31 00:48:02 24 4
gpt4 key购买 nike

我有一个“集合”数据类型:

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" 的类型为 const char[2] 而不是 const char* 这一事实有关.有人知道如何让它工作吗?

最佳答案

问题是 V 为左参数获取一种类型,为右参数获取另一种类型。我怀疑您还希望能够说 add(setOfLong, 0) - 但是使用该模板您不能。我建议添加一个单独的模板参数来解决这个问题

template <class SetV, class V>
void add(const Set<SetV>& set, const V& value) {}

关于C++ 模板参数推断和字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3121843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com