gpt4 book ai didi

c++ - 模板和 is_same() 不起作用?

转载 作者:行者123 更新时间:2023-11-30 02:57:41 26 4
gpt4 key购买 nike

if (std::is_same<T, float>::value)
{
float a;
somefunc_float(x,len,&a);
}

上面的代码来自一个模板,它接受一个指针 x ,它可以是一些原始数据类型的指针(例如 x 是 double *float *int * ),和 somefunc_float来自库,只能接受一种特定数据类型 x (上例中的 float *),编译器总是报错,告诉我输入的数据类型 (x) 不正确,就像表达式 std::is_same<T, float>::value 一样。根本没用吗?

最佳答案

现在我们有了 C++17,您的方法变得有效了。然而,需要一个小而重要的修正:

// is_same_v is an alias for is_same<...>::value
if constexpr (std::is_same_v<T, float>) {
float a;
somefunc_float(x,len,&a);
}

if constexpr 是常规 if 语句的编译时评估变体,在某种程度上类似于预处理器 #if。查看documentation of if了解更多信息。

关于c++ - 模板和 is_same() 不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14309525/

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