c++ - 模板类型后的星号 '*' 是什么意思?

标签 c++ templates

我在模板类型之后使用了 * 的模板代码:

  ...
  template <typename _Up, typename _Ep, typename = void>
  struct _Ptr
  {
      using type = _Up*; 
  };
  ...

我看到的另一种用法

   ...
   template <typename T, typename \
   std::enable_if<std::is_integral<T>::value,T>::type* = nullptr>
   ...

在哪里描述了这个结构?

最佳答案

与它对任何类型的含义相同 - 它是指向 std::enable_if 中定义的 type 的指针,专门用于 true 条件,即默认 void - 产生所有熟悉的 void*

在一个完全不同的(可能是不明智的)注意事项上,这不是我第一次看到您提出的问题涉及相当复杂的主题(SFINAE 就是一个),这表明一些基本的基础知识还不存在。我真诚地推荐阅读一本优秀的 C++ 书籍 - 您可以在此处找到精选列表:The Definitive C++ Book Guide and List

关于c++ - 模板类型后的星号 '*' 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54225226/

相关文章:

c++ - C 字符串和删除 - 它们究竟是如何工作的?

c++ - MFC 中的抽象基类是否需要 DECLARE_DYNAMIC?

c++ - 具有自动返回类型参数推导的可变参数模板

c++ - getline从txt文件中读取数据

c++ - .lib 中的主要功能作为启动功能?

c++ - 从包含十六进制数的 std::string 或 QString 创建 std::bitset 或 QBitArray

c++ - 编写头文件和源文件时的 VS2015 编译时错误

Java 泛型和模板

c++ - 如何编写一个不断敲击输出的包装器?

c++ - 使用 SFINAE 检查类型是否可以绑定(bind)到模板模板参数