87得票4回答
为什么ADL不能找到函数模板?

C++规范的哪一部分限制了参数相关查找不能在相关命名空间中找到函数模板?换句话说,为什么下面main中的最后一个调用无法编译?namespace ns { struct foo {}; template<int i> void frob(foo const&...

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

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

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

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

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

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

13得票6回答
模板函数中不会自动将`int`转换为`float`。

我在用C++编程数年后,今天被问了一个简单的问题,但是实际上我找不到答案,所以来这里寻求帮助。 除了想知道为什么会出现这个错误之外,我还想知道如何通过修改只有模板函数而不改变main()函数的情况下解决以下错误。 template &lt;class T&gt; T Add(T first...

12得票6回答
C++:如何在模板函数中使用类型进行分支?

我对模板不是很熟练。如何编写一个名为“get”的模板函数,根据模板类型选择要获取的数组?请参见以下示例: struct Foo { int iArr[10]; char cArr[10]; // How to pick array here based on tem...

12得票3回答
如何专门化 std::begin?

我正在尝试为自定义容器专门定制std::begin。我这么做是因为我想使用基于范围的for循环来遍历容器。这是我的代码:class stackiterator { … }; class stack { … }; #include &lt;iterator&gt; template &lt;...

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

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

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

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

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

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