gpt4 book ai didi

c++ - 推导模板参数表达式的类型

转载 作者:太空宇宙 更新时间:2023-11-04 16:02:50 25 4
gpt4 key购买 nike

如何推断模板参数表达式的类型?例如,关于以下代码:

template< typename T >
class A
{
//....
};

template< typename T_1, typename T_2 >
class B
{
auto foo()
{
return A</* Type of "T_1+T_2"*/>();
}
};

T_1+T_2的类型如何推导?例如,它可以是 T_1=floatT_2=int因此,foo应该返回 A<float>() (因为将 integerfloat 相加得到 float )。

最佳答案

您可以结合使用 decltypestd::declval。我还建议对结果类型进行 typedef 以提高可读性:

template< typename T_1, typename T_2 >
class B
{
typedef decltype(std::declval<T_1>() + std::declval<T_2>()) result_type;
auto foo() -> result_type
{
return A<result_type>();
}
};

关于c++ - 推导模板参数表达式的类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40504260/

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