问题标签 [template-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
120 浏览

c++ - enable_if 模板函数的关键顺序

为什么对编译器的访问者具有以下定义顺序很重要std::tuple

现场示例:代码

我认为多个 enable_if 开关的一般规则应该是原型化所有功能,然后以任何顺序定义它们?这是否会导致 SFINAE 始终看到正确的可用功能?

0 投票
2 回答
2841 浏览

c++ - 依赖于模板函数的 Pimpl 成语实现

请考虑下面的代码。

模板参数是必须提供函数的处理程序类bar()

我正在使用 Pimpl 习惯用法来隐藏Foo. 在拥有模板参数之前,构造函数定义已经存在foo.cpp并且一切都很好。

引入模板参数后,我必须将构造函数放入foo.h,这会导致以下编译器错误:

Allocation of incomplete type 'Foo::Impl'.

我理解我收到错误的原因,但我想不出解决它的方法,仍然使用 Pimpl 成语。

任何人都可以帮忙吗?

0 投票
1 回答
193 浏览

c++ - 为什么在没有模板声明的情况下在模板类中包含使用模板参数的友元函数的实现?

给定以下代码。

编译器可以毫无问题地编译两个具有模板参数的友元函数,而无需以下语法

或者

或者

因为它们是由模板类本身的实现定义的。

编译器如何在不包含模板声明的情况下使用它们的模板参数编译这些友元函数?为什么只在类内部实现它们就足够了?

我在“使用模板好友时为什么会出现链接器错误?”一节中了解了这个概念

0 投票
1 回答
791 浏览

c++ - C++:在模板快速排序函数中收到“无法推断模板参数”错误

我正在创建一个模板化的快速排序函数,它应该允许我使用迭代器快速排序一个定制的双向链表类。我收到错误

这是我的代码:

据我了解,在研究了这个问题并阅读了其他人收到的解决方案之后,我在模板声明之外直接弄乱了我的列表类。根据编译器,我认为当我的主要快速排序函数调用递归函数时会发生这种情况?我不完全确定是我做了什么导致了这个问题。

现在,这是我第一次尝试这样的模板函数,通过模板调用另一个类。如果这实际上有很多错误,我不会感到惊讶,而它只是向我展示了一个。如果有人还可以告诉我我在此尝试中犯的任何其他错误,请也包括这些错误。

0 投票
4 回答
2387 浏览

c++ - 模板类的模板友元函数

我有以下模板类和模板函数,旨在访问该类的私有数据成员:

为了将这两个函数声明为MyVar<T>的朋友函数,我在template<class T> class MyVar声明友谊的声明中尝试了以下方法。它们都不起作用。我应该怎么做?

0 投票
2 回答
2514 浏览

c++ - 将成员函数作为参数传递给函数模板

考虑在 c++ 中实现例程的三种方法:通过函子、成员函数和非成员函数。例如,

现在考虑一个模板函数来调用上面的三个函数:

FOO::m_function通过 eval调用的正确方法是什么? 我试过了:

0 投票
3 回答
4015 浏览

c++ - 如何专门化 std::begin?

我正在尝试专门std::begin针对自定义容器。我这样做是因为我想for在容器中使用基于范围的。这就是我所拥有的:

我在begin专业化定义中收到以下错误:

没有函数模板与函数模板特化“开始”匹配

我究竟做错了什么?

0 投票
2 回答
273 浏览

c++ - 实例化/模板函数专业化

我正在阅读一本关于 C++ 的书,由于某种原因,我似乎无法理解函数的模板专业化(隐式模板实例化、显式模板实例化和显式专业化)。

需要明确的是,当一个人可以声明/定义一个非模板函数时,我不理解显式模板实例化或显式特化的需要,这将覆盖通用模板函数和特化。

您将在何处、何时以及为什么使用显式模板实例化和/或显式的函数特化?

0 投票
3 回答
2433 浏览

c++ - 使用 decltype 的函数参数类型

注意:这个问题中提供的示例不是生产代码,根本没有任何意义。它只是为了说明我的问题。

我正在测试 的可能性decltype,特别是如果它用于推断函数参数类型,并且遇到了问题:

假设有两个类的结构如下:

现在,我编写了一个函数,它(以某种方式)通过字符串检索类型参数(应该是上述之一)的实例,并将给定值分配给它的m_Value成员:

现在,参数value的类型取决于类型参数,因为使用的类在成员的类型上有所不同m_Value。如您所见,我使用decltype. 现在,通常,您会decltype在参数上使用,如下所示:

但这显然在这里是不可能的,因为实际实例是在函数体中检索的,因此在声明函数参数时不可用。

get_fake_ptr我通过使用仅返回匹配类型的模板函数将它一起破解,nullptr因此我有一个编译器可以用来确定成员类型的“伪实例”。它有效:

在职的

现在,正如我所说,这对我来说似乎真的很老套。所以:

有没有更好的方法来解决这个问题?

谢谢!

0 投票
1 回答
57 浏览

c++ - C++ Xcode 模板函数和数组作为函数变量

伙计们,

试图弄清楚为什么 Xcode 6.0 不喜欢这种语法

我看到 Xcode 抱怨 test(n) 调用没有匹配的函数。