non-type相关内容

为什么使用非类型模板参数?

我已经阅读了很多问题和答案,但是这个问题最吸引我的眼球;它及其答案很有帮助,但我仍然觉得我没有完全理解使用非类型模板参数背后的用途和理论.它们提供了许多关于何时使用它的有用示例,但没有一个真正阐明非类型模板参数背后的理论. 我感兴趣的不是在示例中具体是什么时候,而是更广泛地了解为什么我倾向于使用非类型模板参数而不是常规函数参数. 我知道它们是在编译时确定的,并且每个新调用都会创建一个新 ..
发布时间:2021-11-17 05:38:45 C/C++开发

可以将包含函数指针的类用作非类型模板参数吗?

考虑以下包含函数指针的类 S 和该类的以lambda初始化的 constexpr 对象 s : struct S{无效(* f)();};constexpr S s {[] {}}; 现在,如果我编写一个类型为 S 的非类型模板参数的模板 X ,并通过 s 实例化它,如下所示: template结构X {};使用x = X s; clang编译代码,但是gcc抱怨: 错误 ..
发布时间:2021-04-20 19:05:41 C/C++开发

模板非类型参数,C ++ 11,字符串文字的限制

模板非类型参数的限制规则如下: 非类型,非模板模板参数的模板参数应为以下之一: -对于整数或枚举类型的非类型模板参数,该模板参数类型的转换常量表达式(5.19);或 -非类型模板参数的名称;或 -一个常数表达式(5.19),用于指定具有静态存储持续时间和外部或内部链接的对象的地址,或者具有外部或内部链接的函数的地址,包括函数模板和函数模板ID,但不包括非静态类成员,表示为( ..
发布时间:2021-02-09 19:16:52 C/C++开发

未命名的非类型模板参数有什么意义?

根据引用,即非类型模板参数的名称即使分配默认值也是可选的(请参阅(1)和(2)).因此,这些模板结构是有效的: template struct Foo {}; template struct Bar {}; 我还没有看到访问非类型参数值的可能性. 我的问题是:未命名/匿名非类型模板参数有什么意义?为什么名称是可选的? 解决方案 ..
发布时间:2020-11-13 03:55:14 C/C++开发

为什么要使用非类型模板参数?

我已经阅读了许多问题和答案,但是此问题最吸引我的目光;它及其答案很有帮助,但我仍然觉得我不完全了解使用非类型模板参数的用途和理论.它们提供了许多有关何时使用它的有用示例,但没有一个真正揭示非类型模板参数背后的理论. 我有兴趣不专门了解示例中的时间,而更广泛地了解为什么我倾向于仅在常规函数参数上使用非类型模板参数. 我知道它们是在编译时确定的,并且每个新调用都会使用确定的非类型模板参数值 ..
发布时间:2020-09-07 01:07:54 C/C++开发

非类型模板参数的使用情况,不是积分/枚举类型?

C ++允许非类型模板参数是整数或枚举类型(整数包括布尔值和字符),以及指针和任意类型的引用。 我已经看到整数,布尔和枚举参数广泛使用,我欣赏他们的实用程序。我甚至看到了对字符参数的巧妙使用,用于字符串的编译时解析。 / p> 但我想知道非类型模板参数的一些用例是指针或任意类型的引用? 解决方案 使用指针到成员函数作为模板参数,使编译器可以内联对该函数的调用。这个用法的一个例子 ..
发布时间:2016-10-27 00:07:36 C/C++开发

非类型引用参数/参数

为什么非类型引用的模板参数不能是另一个引用(g ++ 4.8.1): template void test(){} int x = 5; int& p = x; int main(){ test(); // compiles fine test (); //错误:无法将模板参数'p'转换为'int&'| } 我看 ..
发布时间:2016-10-20 21:47:11 C/C++开发

有没有办法推断出函数指针模板参数的值?

C ++允许非类型模板参数为指针,包括函数指针,类型。我最近询问了一个问题,了解此功能的用途,这是其中一个答案的后续步骤。 是否可以从函数指针的函数参数中推导出函数指针模板参数的值?例如: 使用VoidFunction = void(*)(); template void templ(VoidFunction); ... v ..
发布时间:2016-10-20 21:37:48 C/C++开发

浮点类型为非类型的模板专业化

C ++范本的第4.3节 状态“不能使用 浮点文字(和简单的 常数浮点表达式) 作为模板参数具有历史 原因。' 同样, $ 14.1 /类型 模板参数不应该是 声明为浮点, 类或void类型。[示例: template class X; // error template class Y; // OK t ..
发布时间:2016-10-13 11:43:24 C/C++开发