1371得票10回答
我需要在哪里和为什么要使用"template"和"typename"关键字?

在模板中,我在依赖名称上为什么要使用 typename 和 template,以及在哪里使用它们?另外,什么是依赖名称呢? 我有以下代码: template <typename T, typename Tail> // Tail will be a UnionNode too....

49得票1回答
在模板函数中调用的模板类的模板成员函数

这个不能编译: template<class X> struct A { template<int I> void f() {} }; template<class T> void g() { A<T> a; a.f<...

39得票3回答
条件运算符的返回类型和两阶段查找

请看下面的代码片段: 考虑以下代码片段: struct Base { }; struct Derived : Base { }; void f(Base &) { std::cout << "f(Base&)\n"; } template <class ...

28得票2回答
C++模板的双重名称查找-为什么?

为什么C++标准为模板定义了两阶段查找?非相关声明和定义的查找不能延迟到实例化阶段吗?

26得票2回答
依赖于非类型模板参数的static_assert语句(在gcc和clang上的行为不同)

template <int answer> struct Hitchhiker { static_assert(sizeof(answer) != sizeof(answer), "Invalid answer"); }; template <> struct H...

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

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

20得票2回答
g++和MSVS之间的名称查找差异

考虑以下的代码: #include <iostream> namespace N { class A {}; void f(A a) { std::cout << "N::f\n"; } } void f(int i) { std::cout &l...

19得票2回答
调用模板基类的模板函数

可能重复: 可能重复: “template”和“typename”关键字应该放在哪里?为什么? 这是代码: template<typename T> class base { public: virtual ~base(); template<typ...

16得票1回答
允许`this->`访问依赖基类成员的规则是什么?

众所周知,下面的代码是不正确的,因为成员变量x位于一个依赖的基类中。但是,在标识行将x更改为this->x将修复该错误。template <typename T> struct B { int x; }; template <typename T> str...

14得票1回答
模板基类typedef成员不可见

我知道“依赖名称”默认情况下对编译器不可见。但是在回答其他SO问题(这里,这里和最终在C++ FAQ上)时,有人告诉我可以使用using声明来解决。所以我尝试了一下。 一个模板基类: // regardless of the fact that members are exposed......