218得票6回答
如何避免为类模板指定参数,而使用默认模板参数。

如果我被允许做以下事情: template <typename T = int> class Foo{ }; 为什么我不能在主函数中执行以下操作? Foo me; 但是我必须明确以下内容: Foo<int> me; C++11引入了默认模板参数,但目前...

190得票3回答
如何定义类模板的静态数据成员?

我想要做这个: template <typename T> struct S { ... static double something_relevant = 1.5; }; 但是我不能这样做,因为`something_relevant`不是整型。它不依赖于`...

157得票1回答
模板类中的模板函数

我有这段代码:template <class T> class MyClass { public: template <class U> void foo() { U a; a.invoke(); } }; 我想要...

89得票3回答
consteval函数是否允许依赖于函数参数的模板参数?

在C++17中,这段代码是非法的:constexpr int foo(int i) { return std::integral_constant<int, i>::value; } 那是因为即使foo可以在编译时评估,编译器仍然需要生成指令以在运行时执行它,从而使模板实例...

27得票4回答
布尔类型数组没有类模板特化?

根据 https://en.cppreference.com/,std::vector<bool> 有一个类模板特化版本,而 std::array<bool, N> 没有。为什么没有提供呢?

23得票2回答
为什么调用swap()会产生歧义?

以下是程序内容: #include <algorithm> #include <utility> #include <memory> namespace my_namespace { template<class T> void swap...

20得票3回答
带有条件类型名称的模板类

我希望能够有一个模板类(例如float/double类型),但是我正在使用Nvidia CUDA和OptiX,并且有多种其他类型(例如float2、double2、float3等),这些类型都取决于所选择的模板类型。 类似于下面这样: #include <optixu/optixu_v...

14得票1回答
C++20指定初始化器与模板类型

指定初始化器(C++20)如何与CTAD配合使用? 这段代码在gcc9.2中可以正常工作,但在clang8中失败了。template <typename int_t=int, typename float_t=float> struct my_pair { int_t ...

13得票2回答
类模板的嵌套模板参数推导不起作用。

在这个问答中,我编写了一个小封装类,为范围提供反向迭代器访问,并依赖于C++1z语言特性模板参数推导的类模板(p0091r3, p0512r0)。#include <iostream> #include <iterator> #include <vector&gt...

12得票2回答
C++17中的部分类模板参数推导

在下面的示例中,我们使用C++17的功能“类模板参数推导”来推断val的类型为Base<int, double, bool>。 template<class T, class U, class V> struct Base { Base(T, U) { }; ...