gpt4 book ai didi

c++ - 显式实例化可变参数构造函数 : template-id does not match any template declaration

转载 作者:搜寻专家 更新时间:2023-10-31 01:33:27 27 4
gpt4 key购买 nike

我正在尝试 explicitly instantiate a variadic构造函数。这个最小的例子 print all arguments导致我在 64 位 Win 7 和 GCC 5.3 的 MinGW-w64 上看到的相同错误。

struct stf {
template<typename... Args> stf(Args&&... args){
using expand_type = int[];
expand_type{(print(args), 0)... };
}
};

//error on next line:
//template-id 'stf<char*, char*>' for 'stf::stf(char*, char*)'
//does not match any template declaration
template stf::stf<char*,char*>(char*,char*);

最佳答案

让我们暂时忽略参数包:

template<typename Arg> stf(Arg &&args)

小测验:哪个实例化与上述模板匹配。是吗:

template<char *> stf(char *);

template<char *> stf(char *&&);

?

如果您在模板中出现模板类型的所有地方替换 char *,您显然会以第二个版本作为正确答案。

因此,正确的模板实例化必须是:

template stf::stf<char*,char*>(char* &&,char* &&);

关于c++ - 显式实例化可变参数构造函数 : template-id does not match any template declaration,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41371435/

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