gpt4 book ai didi

c++ - 如何识别模板参数是否为 std::complex?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:58:03 25 4
gpt4 key购买 nike

如何识别模板参数是否为std::complex ?我想要一个支持所有数据类型的通用方法,如 float、double、int 等。 我知道使用 std::is_same 我可以专门检查给定类型,例如 std::complex<float> .但是这里我需要一个通用的方法。

最佳答案

这可以使用部分模板特化来完成。

首先定义一个默认为 false 的包罗万象的模板:

template<typename T>
struct is_complex_t : public std::false_type {};

然后为符合条件的类型提供重载:

template<typename T>
struct is_complex_t<std::complex<T>> : public std::true_type {};

我也想添加一个效用函数:

template<typename T>
constexpr bool is_complex() { return is_complex_t<T>::value; }

编辑:c++14 及更高版本不需要或无用此实用函数,因为 std::integral_type 实现了 operator()。

用法:

bool int_is_complex = is_complex<int>(); //false
bool complex_is_complex = is_complex<std::complex<float>>(); //true

关于c++ - 如何识别模板参数是否为 std::complex?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41438493/

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