'char const *str' 作为模板参数

Vis*_*iva 5 c++ templates constants

可以说我有一个模板:

template<char const *str>
class Template { ... };
Run Code Online (Sandbox Code Playgroud)

为什么不能写出下面的内容呢?

Template<"literal"> T;
Run Code Online (Sandbox Code Playgroud)

或者

char const *s = "Literal";
Template<s> T;
Run Code Online (Sandbox Code Playgroud)

为什么下面的方法有效?

char const s[] = "Literal";
Template<s> T;
Run Code Online (Sandbox Code Playgroud)

Ido*_*dov -1

因为模板类是基于类型而不是值的。
模板旨在帮助您编写更通用的代码,该代码对于多种类型的数据都是相同的,因此您不必为每种类型重新编写它。