问题标签 [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 投票
3 回答
62 浏览

c++ - 具有特殊功能的拉开功能类型

这个问题的答案使用类模板挑选出一个函数类型:

当我研究这里正在做的事情时,我试图重写function_args. 我试图使用一个函数来做到这一点,以消除对decltypeargs模板的需求。但发现自己陷入了不正确的语法:

我的希望是打电话decltype(myTry<decltype(foo)>())来获取tuple类型,而不是打电话decltypeargs<decltype(foo)>。有没有办法通过函数声明来做到这一点?

0 投票
0 回答
27 浏览

c++ - 可变参数模板函数不会链接

cmds.cpp 有这个:

cmds.h 有这个:

main.cpp 有这个:

编译器愉快地编译。然而,链接器说:

生成文件标志:

到底是怎么回事?

0 投票
3 回答
1419 浏览

c++ - 当作为类的成员函数重载时,解引用运算符 (*) 如何工作?

当我查阅有关运算符重载的书籍和堆栈溢出文章时,我发现以下内容:

当重载运算符是成员函数时, this 绑定到左侧操作数。成员运算符函数的参数比操作数的数量少一个(显式)。

(Addison Wesley,C++ 入门)

所以我的问题是,由于*(dereference) 运算符没有任何左操作数,它如何获取其参数(即对象本身或this)?

0 投票
3 回答
1757 浏览

c++ - 从 C 文件调用模板函数

我知道模板不是用 C 定义的。但是在我的例子中,我有一个用 C++ 编写的 API,它由用 C 编写的应用程序使用。我希望在 API 中添加一个模板函数。该函数在 abc.cpp 中定义如下:

abc.hpp 中的声明如下:

这个函数是从 xyz.c 调用的:

但是,它在 abc.cpp 和 abc.hpp 中都显示以下错误:

即使使用 extern "C" 也无济于事(导致错误:带有 C 链接的模板)。我的疑问是,是否可以以这种方式调用此模板函数?如果是,如何实现?谢谢你。

0 投票
2 回答
8621 浏览

c++ - 模板类类型特定函数

好的,所以我有这个模板类,它有点像单向列表。

它有这个内部功能打印

你可以猜到,它从头到尾打印列表内容;但是,由于模板可以将类作为 T,可以想象,对于这种情况,我需要不同的 Print() 实现。例如,我有另一个类 Point

所以我想要专门为点设计的打印。我试过这个:

但编译器告诉我

尽管

对我来说,这似乎是相同的功能。怎么了?以及如何编写特定于 T 的模板类函数?

0 投票
1 回答
566 浏览

c++ - 如何在 C++ 中定义需要两个迭代器的模板函数?

我想定义一个模板函数,它需要两个迭代器,一个是 begin(),另一个是 end()。这如何在 C++ 中实现?

到目前为止,我能想到以下几点:

这是错的吗?

0 投票
0 回答
38 浏览

friend-function - 如何定义模板类的友元模板函数

我有一个模板类array_T,它是一个通用数组和一个模板函数linear search TEMPLATE.h,它被声明为类的朋友,arrayTemplate.h 因此它可以使用类的成员函数getArraySize()和类的数据成员a,它是一个动态分配数组

数组模板.h

线性搜索 TEMPLATE.h

主文件

这些是我得到的错误

线性搜索 template.h(8):错误 C2065:'array_T':未声明的标识符

线性搜索 template.h(8):错误 C2065:“对象”:未声明的标识符

线性搜索 template.h(8): 错误 C2275: 'T': 非法使用这种类型作为表达式

线性搜索 template.h(6):注意:参见“T”的声明

线性搜索 template.h(8):错误 C2146:语法错误:标识符“desiredData”之前缺少“)”

main.cpp(14): 错误 C2660: 'linearSearch': 函数不接受 2 个参数

========== 构建:0 成功,1 失败,0 最新,0 跳过 ==========

0 投票
2 回答
494 浏览

c++ - 非法使用模板中的类型

我是模板新手。我不知道我做错了什么:

在 VS2013 中编译后出现错误:错误 1 ​​错误 C2275:'T':非法使用这种类型作为表达式

0 投票
1 回答
319 浏览

c++ - C++1z 标准如何定义模板函数声明中属性的正确位置?

我注意到 C++11 和 C++14 标准中的第 18.8/1 节在<exception>标题概要中包含以下声明:

而在最新的 C++17 草案中,相同的声明显示为

这是否意味着属性的语法在 C++17 中发生了变化,或者只是前一行是一个已得到纠正的错误?在 7.6 和 14.5.6 中,我都找不到任何关于属性应该出现在哪里的明确描述。有人可以指出这是在哪里定义的吗?

实际上,MSVC 对第一个和第二个声明都很满意,而 g++ 和 clang 拒绝编译第一个版本(后者带有相当明确的error: an attribute list cannot appear here),所以无论如何都需要使用第二个版本。但我想知道第一个是否也应该有效。

0 投票
2 回答
86 浏览

c++ - 执行模板参数包指向的所有方法

  1. 我可以制作方法(=成员函数)指针的模板参数包吗?
  2. 如果是,是否可以创建一个(模板)函数来执行其模板参数包中的所有方法?

简化:

  • 指定方法的执行顺序无关紧要。
  • 所有方法指针具有相同的签名(例如 return bool,具有相同的基类,不带参数)