用于非类型模板参数的用例不是整数/枚举类型?

HC4*_*ica 6 c++ templates non-type

C++允许非类型模板参数为整数或枚举类型(包括布尔和字符的整数),以及指向任意类型的指针和引用.

我已经看到广泛使用的整数,布尔和枚举参数,我很欣赏它们的实用性.我甚至已经看到巧妙地使用字符参数进行字符串的编译时解析.

但我想知道什么是非类型模板参数的一些用例,它们是指针或对任意类型的引用?

wil*_*llj 4

使用成员函数指针作为模板参数使编译器可以内联对该函数的调用。这种用法的一个例子可以在我对这个问题的回答中看到:如何允许模板化函子在成员和非成员函数上工作

在此示例中,模板参数中的指向成员函数的指针允许生成包含对指向成员函数的指针的调用(内联)的“thunk”函数。与指向成员函数的指针不同,指向 thunk 函数的指针具有通用签名(和固定大小),这使其能够以最小的运行时成本进行存储和复制。