首页 >后端开发 >C++ >字符串文字可以作为非类型模板参数传递吗?

字符串文字可以作为非类型模板参数传递吗?

Barbara Streisand
Barbara Streisand原创
2024-11-20 01:27:03901浏览

Can String Literals be Passed as Non-Type Template Arguments?

将字符串文字传递给非类型类模板参数

问题:

字符串文字可以作为类模板的非类型参数,例如在声明中my_class?

答案:

虽然直接将字符串文字作为非类型模板参数传递是不可能的,但有一个非常接近的解决方案它。

您可以使用 const char* 类型的非类型模板参数并向其传递 const char[]具有静态链接的变量。这种方法与直接传递字符串文字有相似之处。

这是一个可编译的示例:

#include <iostream>

template<const char *str>
struct cts {
    void p() { std::cout << str; }
};

static const char teststr[] = "Hello world!";

int main() {
    cts<teststr> o;
    o.p();
}

上面的代码声明了一个带有非类型模板参数 str 的类模板 cts,该参数采用常量字符指针。使用静态链接定义的变量 teststr 保存字符串文字并传递给模板实例化。

此方法是直接将字符串文字作为非类型模板参数传递的可行替代方法。

以上是字符串文字可以作为非类型模板参数传递吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn