c++ - 为什么 "class"中有 "template <class x>"?

标签 c++ templates syntax

模板语句的“类”部分是做什么的?

例子:

template <class T>
class Something
{
    public:
        Something(const T &something);
}

还有什么可以去那里?我通常只看到“类”。

最佳答案

class关键字与 typename 含义相同大多数情况下是关键字。它们都表明 T 是一个类型。

关键字之间唯一的区别classtypename是那个class可用于向模板提供类模板模板参数,而 typename不能。考虑:

template<template <class T> class U> // must be "class"
std::string to_string(const U<char>& u)
{
  return std::string(u.begin(),u.end());
}

您唯一可以用来代替 class 的东西或 typename keywords 是一个整数类型。例如:

template<std::size_t max>
class Foo{...};
...
Foo<10> f;

有关这方面的具体示例,请查看 std::bitset<N>在标准库中。

关于c++ - 为什么 "class"中有 "template <class x>"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/348730/

相关文章:

c++ - 使用 boost::program_options 解析配置文件

c++ - 错误 : no match for 'operator[]'

c++ - 事件(线程)可以持续多长时间

c++ - "run time templates"

c++ - Coin-or-CBC 求解器性能 : command line utility vs. 编译的 c++ 程序

c++ - 类模板实例化中的类型转换

C++ 模板(泛型编程)与多态性?

syntax - 为什么 Clojure 语言使用这么多括号?

php - 我们可以在声明命名空间之前添加 php 注释吗

javascript - 为什么++[[]][+[]]+[+[]] 返回字符串 "10"?