templates相关内容

如何消除仅根据返回类型不同的函数模板的歧义?

我注意到,用于区分唯一模板函数的签名与用于区分唯一函数(包括从模板函数实例化的函数)的签名之间存在不对称。 特别是,只根据返回类型不同的模板函数被认为是唯一的,而仅由返回类型不同的函数被认为是多余的。 ,我有一个相应的问题,关于如何在不同的返回类型的函数模板之间的歧义,在实例化: #include template l ..
发布时间:2016-10-14 20:02:06 C/C++开发

模板声明和影响的影响定义

从我所理解的模板类和模板函数(大部分)必须在同一个头文件中声明和定义。有了这个说法: 有没有其他方法来实现模板文件的单独编译,而不是使用特定的编译器? 如果有的话,在同一文件中声明和定义有什么缺点? li> 什么是模板声明的最佳实践,定义? 解决方案 如何整理模板源代码 基本上,您有以下选项: 在实例化的时候,让模板定义对编译器可见。 在单独的编译单元中实例 ..
发布时间:2016-10-14 19:55:09 C/C++开发

使用模板有什么缺点?

一些缺点是 其语法很复杂 编译器生成额外代码 解决方案 它们很难验证。没有使用的模板代码往往很少被编译。因此,测试用例的良好覆盖是必须的。但测试是耗时的,然后它可能会导致代码从来不需要是鲁棒的第一。 ..
发布时间:2016-10-14 19:53:22 C/C++开发

模板类成员专业化,没有声明头

我有一个模板类,我在一个头声明一个方法,没有该方法的头部中的定义。在.cc文件中,我定义了该方法的特殊化,而不必在标题中声明它们。 在不同的.cc文件中,我调用存在特殊化的不同模板参数的方法。它看起来像这样: foo.h: 类型名T> class Foo { public: static int bar(); }; foo.cc: #includ ..
发布时间:2016-10-14 19:52:11 C/C++开发

启发使用C ++ 11 decltype

我刚看过这个真的很棒的演讲 Rock Hard: C ++进化。在关于高阶通用编程的部分中,他说以下是关于其返回类型更通用的函数的示例,并且导致更少的模板函数重载 template auto deduce(const Func& f) - > decltype(f()) {..} 模板语法如下 template ..
发布时间:2016-10-14 19:48:52 C/C++开发

接受任何类型的可调用和也知道参数类型

我不知道是否可能,所以这就是我想要找出的。 我想创建一个函数接受任何类型的函子/ callable对象,但我想知道参数类型是什么。 (但不强制执行) 所以,这一个捕获所有,但不给我的参数类型: template void optionA(T); 这一个捕获最多,并且具有参数的类型 template void optio ..
发布时间:2016-10-14 19:48:46 C/C++开发

“this->模板[somename]”的调用是什么?

我搜索过这个问题,我找不到任何东西。有没有更好的方法来查询这样的在谷歌或任何人可以提供链接或链接或相当详细的解释?谢谢! 编辑:这是一个示例 类型名T,size_t N> struct Vector { public: Vector(){ this-> template operator =(0); } // ... template typ ..
发布时间:2016-10-14 19:48:43 C/C++开发

如何调用成员函数只有当对象恰好有它吗?

可能重复: 是否可以编写一个C ++模板来检查函数的存在? 我有一个函数 f ,接收一个值 val T (模板)的。有没有任何方法可以调用 val (如果类型有这样的成员函数)的成员函数? 示例: struct Bar { void foo()const {} }; template void f(T const& val){ // ..
发布时间:2016-10-14 13:00:39 C/C++开发

将仅头模板库编译到共享库中?

我们正在设计一个新的C ++库,并决定采用基于模板的方法,以及一些特定的部分模板专门化的角落情况。特别是,这将是一个标题模板库。 现在,有一些担心这会导致很多代码复制,因为这个模板“库”将被编译到使用它的任何其他共享库或可执行文件(可以说只有那些被使用的部分)。我仍然认为这不是一个问题(特别是,编译器甚至可以内联的事情,它不能跨共享库边界)。 但是,因为我们知道是否有一种方法可以将这个 ..
发布时间:2016-10-14 12:59:22 C/C++开发