gpt4 book ai didi

c++ - 检测类型是否为 std::tuple?

转载 作者:IT老高 更新时间:2023-10-28 21:38:49 31 4
gpt4 key购买 nike

目前我有两个功能:

template<typename Type> bool f(Type* x);
template<typename... List> bool f(std::tuple<List...>* x);

有什么方法可以将这两个函数与一个额外的模板参数合并,该参数指示传递的类型是否为元组?

template<typename Type, bool IsTuple = /* SOMETHING */> bool f(Type* x);

最佳答案

当然,使用 is_specialization_of (链接取自 here 并已修复):

template<typename Type, bool IsTuple = is_specialization_of<Type, std::tuple>::value>
bool f(Type* x);

然而,问题是,你真的想要这样吗?通常,如果您需要知道一个类型是否是元组,您需要对元组进行特殊处理,这通常与它的模板参数有关。因此,您可能希望坚持使用重载版本。

编辑:既然你提到你只需要一小部分专门化,我建议重载,但只适用于小的特殊部分:

template<class T>
bool f(T* x){
// common parts...
f_special_part(x);
// common parts...
}

template<class T>
void f_special_part(T* x){ /* general case */ }

template<class... Args>
void f_special_part(std::tuple<Args...>* x){ /* special tuple case */ }

关于c++ - 检测类型是否为 std::tuple?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13101061/

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