7得票1回答
将函数模板的特化版本传递给可变参数模板函数

我可以轻松地将函数模板特化的地址传递给常规模板函数: template <typename T> void f(T) {} template <typename A, typename B> void foo(A, B) {} int main() { f...

10得票1回答
SFINAE: 删除具有相同原型的函数

我想知道以下代码的区别是什么,因为它能够正常工作: #include <type_traits> #include <iostream> template<typename T> using is_ref = std::enable_if_t<st...

14得票1回答
std::vector<T> 的比较运算符无法找到 T 的比较运算符

下面这段非常简单的代码无法编译。 #include &lt;vector&gt; #include &lt;string&gt; namespace Foobar { struct Test { std::string f; std::uint16...

7得票2回答
如何编写一个模板函数,接受一个数组和一个指定数组大小的整数。

为了完成一项大学练习,我被要求编写一个模板函数“print();”,该函数接受两个参数:1.一个通用类型的数组;2.一个指定数组大小的整数。然后,该函数应将数组中的每个项目打印到控制台上。我遇到了一些函数参数的问题。我目前的代码如下: template &lt;typename Typ...

9得票4回答
如何在模板中调用类型的析构函数?

例如,我们有一个像这样的函数: template &lt;typename TYPE&gt; void construct_and_destruct(TYPE &amp; object) { //... } 我们不能像 object.Type() 和 object.~Type()...

20得票3回答
为什么C++11不会隐式地将lambda转换为std::function对象?

我实现了一个通用的事件发射器类,它允许代码注册回调函数并带有参数发射事件。我使用了 Boost.Any 类型擦除来存储回调函数,以便它们可以具有任意参数签名。 它能够正常工作,但是出于某种原因,传递的 lambda 必须首先转换为 std::function 对象。为什么编译器不能推断 la...

8得票2回答
如何专门化模板成员函数?

我有以下模板方法: struct MyStruct { // ... template&lt;typename T&gt; void readField(std::istream&amp; in, T&amp; data) { read(in, data); ...

9得票1回答
为什么两种类型的std::is_same会给出不同的结果?

在下面的代码中,为什么调用fun的两种方式:fun(num)和fun&lt;const int&gt;(num)在编译时会产生不同的结果? #include &lt;iostream&gt; using namespace std; template&lt;typename T, type...

43得票4回答
内联模板函数?

如果它们包含在多个cpp文件中,那我是否需要使用inline模板函数呢?谢谢。template&lt;bool&gt; inline QString GetText(); template&lt;&gt; inline QString GetText&lt;true&gt;() {return...

11得票1回答
C++:候选模板被忽略:模板参数的显式指定无效。

我有这个函数头:template &lt; bool src_alpha, int sbpp, int dbpp, typename T1, typename T2, Color (*getFunc)(T1 data, Uint8* addr), voi...