105得票3回答
模板类成员函数的显式特化

我需要为某些类型(比如double)专门化模板成员函数。当类X本身不是模板类时,它能够正常工作,但当我将它变成模板类时,GCC开始给出编译时错误。#include <iostream> #include <cmath> template <class C>...

104得票6回答
一个模板类中单个方法的模板特化

假设下面的头文件包含我的模板类,并且至少在两个 .CPP 文件中被引用,那么这段代码可以正确编译: template <class T> class TClass { public: void doSomething(std::vector<T> * v); }...

64得票4回答
默认模板参数和部分特化

请解释一下为什么以下代码片段可以编译并且完美运行。 我感到很困惑。 #include<iostream> template<class A = int, class B=double> class Base {}; template<class B> c...

61得票5回答
友元声明是声明一个非模板函数。

我有一个类似下面代码的基类。我尝试重载 << 以便在 cout 中使用。 然而,g++ 报错:base.h:24: warning: friend declaration ‘std::ostream& operator<<(std::ostream&, ...

48得票4回答
C++标准允许为自定义类型专门化std::to_string吗?

在C++11及更高版本中,是否允许在std命名空间中为自定义类型特化std::to_string?namespace std { string to_string(::MyClass const & c) { return c.toString(); } } 使用示例:int main...

41得票5回答
C++模板特化(无默认函数)

我有以下代码,它可以编译并且运行良好: template<typename T> T GetGlobal(const char *name); template<> int GetGlobal<int>(const char *name); templ...

41得票3回答
C++ 模板部分特化成员函数

我是一个新手,对模板不太熟悉,所以这可能是一个微不足道的事情,但我无法让它工作。我正在尝试获取类成员函数的部分特化。最短的代码如下: template <typename T, int nValue> class Object{ private: T m_t; O...

38得票3回答
模板类成员函数只能特化

我正在阅读《模板完全指南》,它提到: 在谈论类模板特化时: 虽然可以对类模板的单个成员函数进行特化,但一旦这样做了,您将无法再对包含该专门成员的整个类模板实例进行特化。 我在想这是怎么回事,因为你可以没有任何成员函数的特化。 它是否意味着您不能有只带有一个成员函数的特化,然后另一个带有所有...

30得票3回答
C++的部分模板特化结合std::is_base_of和std::enable_if。

假设我有两个类:Serializable和Printable。 那么一个简单的模板函数,可以接受所有派生自Printable的类,可能会像这样: template <class T, class B = Printable, class = typename std::enable_...

28得票6回答
C++类模板特化,无需重新实现全部内容

我有一个类似于模板的类: template<typename T> class A { protected: std::vector<T> myVector; public: /* constructors + a bunch...