8得票3回答
如何在不使用lambda表达式的情况下将一个模板函数作为方法参数传递?

我希望能够在不声明lambda函数的情况下,使用 extFunction 或者 std::max 或者 std::min 作为 square 方法的参数: template<typename T> T extFunction(T a, T b) { return a; }...

8得票2回答
为什么我们需要voidify函数模板在uninitialized_copy中?

我正在阅读关于 std::uninitialized_copy,并遇到了一个叫做 voidify 的东西: Effects: Equivalent to: for (; first != last; ++result, (void) ++first) //#1----vvvvvvv----...

8得票4回答
函数模板:使用类型特征进行不同的特化

考虑到类模板,可以使用类型特征和虚拟启用器模板参数为某些类型组提供模板特化。我之前已经问过了。 现在,我需要同样的内容应用于函数模板:也就是说,我有一个模板函数,并且想要针对一组类型进行特化,例如所有子类型为类X的类型。我可以使用类型特征来表达这个意思。 std::enable_if&lt...

8得票1回答
函数指针和ODR问题

我看到了很多关于ODR的问题,但是没有找到我需要的答案,如果这个问题已经有人问过或者标题不合适,请见谅。 请考虑以下内容: struct t {t(*id)();}; template<typename T> t type() {return {type<T>};...

7得票1回答
基于其他模板参数指定返回类型

我想通过另一个模板参数来指定我的模板函数的返回类型。所有这些都在一个类内部。 在头文件中: class MyClass { template<int type, typename RT> RT myfunc(); }; 在 .cpp 文件中,类似这样的代码:...

7得票1回答
非类型函数模板参数

我正在阅读《C++模板完全指南》,看到了这个非类型函数模板参数的代码(我已经添加了main()和其他部分,除了函数定义和调用): #include <vector> #include <algorithm> #include <iostream> tem...

7得票1回答
C++中关于模板中通用初始化的问题

我正在编写一个通用函数,代码如下。 template<class Iterator, class T> void foo(Iterator first, Iterator last) { T a; cout << a << endl; /...

7得票3回答
具有显式模板参数列表的函数调用推断失败和[temp.arg.explicit]/3

[temp.arg.explicit]/3 C++17标准(最终草案)中提到了使用显式模板参数列表进行函数模板参数推导的情况: 在进行推导并失败的上下文中,如果指定了模板参数列表,并且该列表与任何默认模板参数一起可以唯一识别单个函数模板实例化,则该模板-id对于函数模板特化是一个左值。 ...