gpt4 book ai didi

c++ - 可变参数模板函数中对重载函数的不明确调用

转载 作者:行者123 更新时间:2023-12-02 09:47:40 28 4
gpt4 key购买 nike

我正在使用可变参数模板函数,其中函数参数不是模板化类型。

我遇到编译错误:

错误 C2668“_TailHelper”:对重载函数的不明确调用

这是代码片段。

template <typename HEAD>
void _TailHelper(int) {
std::cout << typeid(HEAD).name() << std::endl;
}

template <typename HEAD, typename ... TAILS>
void _TailHelper(int x) {
_TailHelper<HEAD>(x);
_TailHelper<TAILS...>(x);
}


int main(){
_TailHelper<int,double>(2);
}

最佳答案

两个重载都与单个模板参数匹配,因此您必须禁用其中一个。例如这样:

#include <iostream>    
#include <typeinfo>

template <typename T>
void TailHelper(int) {
std::cout << typeid(T).name() << std::endl;
}

template <typename HEAD, typename ... TAILS>
typename std::enable_if<(sizeof...(TAILS) != 0)>::type
TailHelper(int x) {
TailHelper<HEAD>(x);
TailHelper<TAILS...>(x);
}

int main() {
TailHelper<int,double>(2);
}

关于c++ - 可变参数模板函数中对重载函数的不明确调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64206587/

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