10得票2回答
以下程序是否符合标准,应该可以编译吗?

在发现MSVC和GCC(也可能包括clang)在编译和链接同一代码时存在不一致性后,我变得很好奇这个程序是否实际上能够编译和链接,因此这是MSVC的错误(它报告了链接器错误),还是我应该用不同的方式编写它。该程序由3个文件组成: C.htemplate <typename T> ...

7得票3回答
在Eigen中复制模板化函数参数

我正在编写一个使用Eigen数据类型的通用类。我已经遇到了将构造函数参数分配给类成员变量的问题。我的代码简化后如下: template <typename Derived> class A { public: Eigen::Matrix<Derived> M; /...

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

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

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

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

10得票3回答
避免在默认模板中使用尖括号。

如果我有一个默认模板类型的模板类,我必须写上模板尖括号。有没有办法可以避免这样做呢? 例如: template <typename T=int> class tt { public: T get() { return 5; } }; ... tt<> t; ...

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

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

10得票2回答
g++在非常特定的情况下无法使用C++17类模板参数推导功能

我有以下代码: template <class T> class lit { public: lit(T l) : val(l) {} T val; }; template <class T> class cat { public: cat...

9得票2回答
CRTP是否没有编译时检查?

我尝试使用“奇异递归模板模式”来实现静态多态性,但注意到static_cast<>通常在编译时检查一个类型是否能够转换成另一个类型,却未能检查基类声明中的打字错误,从而允许将基类向下转型为其任意子类: #include <iostream> using namesp...

7得票2回答
模板和重载

template<class Key1, class Key2, class Type> class DualMultimapCache { public: std::list<std::reference_wrapper<Type>>...

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

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