表达式 std::enable_if 中的 type* 是什么

比尔·兰伯特

有人可以向我解释一下是什么type*意思吗?

我在 std::enable_if 的文档中看到这个例子:

// #3, enabled via a parameter
template<class T>
void destroy(
      T* t, 
      typename std::enable_if<std::is_trivially_destructible<T>::value>::type* = 0
    ){
    std::cout << "destroying trivially destructible T\n";
 }

为什么我们在这里使用 type ,什么是type*

谢谢!

戴帽子的公鸡

它是一个指向由std::enable_ifif std::is_trivially_destructible<T>::value == trueelse公开的类型的指针,否则它不存在。它公开的默认类型是void.

请记住,使用 SFINAE 我们只是试图触发替换错误,我们可以通过尝试使用typedef typeof来做到这一点std::enable_if如果std::is_trivially_destructible<T>::valuefalse然后type将不存在并且该函数将被跳过以进行重载解析。

我们也可以指定我们自己的类型,也许这样就清楚了:

std::enable_if<true, int>::type* intPointer;

在这里,intPointer将是 类型int*


如果没有检查enable_if它看起来有点像:

template <typename T>
struct enable_always
{
  typedef T type;
};

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

防止编码器错误 - 忘记在“std::enable_if<>::type”(SFINAE)中添加“::type”

来自分类Dev

std :: pair在lambda表达式中

来自分类Dev

std :: pair在lambda表达式中

来自分类Dev

此正则表达式中\\ +的含义是什么?

来自分类Dev

AngularJS表达式中的$ locals是什么?

来自分类Dev

[^。] *在正则表达式中是什么意思?

来自分类Dev

Ruby正则表达式中的“?-mix”是什么

来自分类Dev

&variable作为表达式在c中的含义是什么

来自分类Dev

在Linq表达式中=>是什么意思

来自分类Dev

AngularJS中的理解表达式是什么?

来自分类Dev

C中的子表达式是什么?

来自分类Dev

ggplot()中偏导数的表达式是什么?

来自分类Dev

SQL表达式中的括号是什么意思?

来自分类Dev

正则表达式中%s +%的含义是什么?

来自分类Dev

catch表达式中的let的目的是什么?

来自分类Dev

在OrderBy中lambda表达式的意义是什么?

来自分类Dev

在Linq表达式中=>是什么意思

来自分类Dev

“ \?”在正则表达式中是什么意思?

来自分类Dev

此表达式(({{} + [])[+ []])在JavaScript中是什么意思?

来自分类Dev

Java中此表达式的含义是什么?

来自分类Dev

\,^ @在sed表达式中是什么意思

来自分类Dev

js中的这个表达式是什么

来自分类Dev

变量:表达式在 Python 中是什么意思?

来自分类Dev

[.] 在正则表达式中的用途是什么?

来自分类Dev

使用std :: enable_if作为函数参数与模板参数的区别是什么?

来自分类Dev

使用std :: enable_if有什么问题?

来自分类Dev

为什么这个std :: enable_if不起作用

来自分类Dev

使用std :: enable_if

来自分类Dev

std :: enable_if <>的错误

Related 相关文章

热门标签

归档