23得票2回答
为什么这个模板函数的行为不如预期?

我正在阅读有关模板函数的内容,遇到了以下问题: #include <iostream> void f(int) { std::cout << "f(int)\n"; } template<typename T> void g(T val) { ...

22得票4回答
带有参数包展开的可变函数模板不在最后一个参数位置。

我想知道为什么以下代码无法编译: struct S { template <typename... T> S(T..., int); }; S c{0, 0}; 这段代码无法通过clang和GCC 4.8的编译。以下是clang的错误信息: test.c...

21得票3回答
20得票4回答
C++函数模板特化

我正在尝试模板特化,但发现了一个无法解决的问题;以下是我的代码: template<int length, typename T> void test(T* array) { ... test<length-1>(array); } template...

15得票1回答
C++中的部分模板函数规范是如何工作的?

我正在尝试确定模板函数的部分指定是否是C++标准的一部分,还是这仅仅属于编译器特定的功能。 所谓部分指定,指的是仅指定编译器无法推导出来的类型。例如,如果我有一个接受3种类型的模板函数"f",并且其中一个用在参数中可以被推导出来,那么我可以使用以下形式调用"f": f<type, ty...

15得票2回答
为什么模板函数中的默认参数不能后期添加?

C++标准第8.3.6.4节规定: 对于非模板函数,可以在同一作用域内的后续声明中添加默认参数。[...] 但我的问题是为什么模板函数不允许添加默认参数?不允许在同一作用域内的后续声明中添加默认参数的原理是什么? 考虑这个编译正常的程序。(非模板函数)(请参见此处的实时演示) #i...

12得票2回答
我可以使用(boost)bind与函数模板吗?

使用(boost)bind,能否将参数绑定到函数模板中? // Define a template function (just a silly example) template<typename ARG1, typename ARG2> ARG1 FCall2Templ(AR...

12得票1回答
std::to_array 用于多维数组

C++20新增了std::to_array,因此您可以轻松地从C风格数组创建std::array,例如: template<typename T, std::size_t N> void foo(const T (&a)[N]) { auto arr = std:...

10得票3回答
函数模板专门化失败?

#include <iostream> template <class T> void foo(T) { std::cout << "foo(T)" << std::endl; } template <class T> ...

10得票1回答
一个在类中定义的友元函数模板是否可供查找?Clang++和G++存在分歧。

以下是代码: struct foo { template<typename T = void> friend foo f() { return {}; } }; int main() { auto x = f(); // clang++ can't find it,...