-
0 votesanswersviews
返回值的简单模板类成员函数特化
我试图调用模板类成员函数特化,从类的构造函数中返回一个值,我似乎无法找到正确的语法(如果它存在) . 下面是我的代码,下面是编译器(不是链接器)的错误消息 . #include <iostream> class A {}; class B {}; template <typename T> class C { public: C() ... -
5 votesanswersviews
从非实例化的上下文中引用特定的模板特化:实例化与否?
请考虑以下示例 template <typename A> struct S { A a; void foo() {} }; template <typename T> void bar() { S<void> *p = 0; } template <typename T> void baz() { S<void>... -
0 votesanswersviews
使用模板特化分割可变参数包
我正在尝试定义一种模板'map'原语(如map-reduce) . 我的想法是我想将一个函数应用于模板参数包的每个项目 . 该函数可以是任何可调用对象 . 它可以返回任何类型(虽然返回类型将被忽略),并且它可以在有问题的项目之上采取其他参数 . 棘手的部分是我有效地拥有两个需要处理的参数包 . 它们最初会被打包在一起,但我想使用模板特化来拆分它们 . 以下是我尝试这样做的尝试 . 如果不明显(由于... -
17 votesanswersviews
将模板类专门化为结构
我刚刚使用以下方法专门针对用户定义类型 std::hash : template<> struct hash<...> {...}; 当VC10向我发出警告时: 警告C4099:'std :: hash <_Kty>':使用'struct'现在看到的'class'首次看到的类型名称 我发现它的标准库声明 std::hash 为 class ,而标准(或我最... -
-2 votesanswersviews
实现模板模板参数的部分模板专业化
我在实现使用模板模板参数的类模板的特化时遇到问题 . 例如,我想编写一个用于排序的类: template <template <typename, typename...> class container_type> struct SortTraits { template <class comparator_type> static void sor... -
5 votesanswersviews
成员函数的部分特化[重复]
可能重复:使用部分模板专门化“无效使用不完整类型”错误 为什么我能做到这一点: template <typename T> struct A { void foo(int); }; template <> void A<int>::foo(int) { } 但不是这个: template <typename> struct C {};... -
0 votesanswersviews
对类模板成员的显式特化的约束
根据[temp.expl.spec]/16: 类模板的成员或成员模板可以明确专门用于类模板的给定隐式实例化... 经过一些测试,我发现专门化应该与类模板的隐式实例化中的成员匹配,这意味着它们应该是相同的类型 . 例如, template<class T> struct A { void f(T); static T i; }; template<> void ... -
3 votesanswersviews
类模板中静态变量模板的部分规范
如果我做部分专业化,我会从clang和g得到不同的结果 . template < typename T> class X { public: T i; X(T _i): i{_i}{} operator T(){ return i; } }; template < typename T2 > class Y {... -
3 votesanswersviews
专业模板类的朋友(C)
#include <iostream> using namespace std; template <typename T> class test { T y; public: test(T k) : y(k) {} friend int a(T& x); }; template <typename T> int a(T&am... -
1 votesanswersviews
具有decltype尾随返回类型的Specialize函数模板
在C 11中,如何使用decltype专门化一个使用“复杂”尾随返回类型声明的函数模板?以下在GCC中工作,但在VC2013中产生“错误C2912:显式特化'int f(void)'我不是函数模板的特化”: #include <iostream> int myint() { return 1; } template<class T> auto f() -> dec... -
43 votesanswersviews
可变参数模板的部分特化
考虑以下类模板“X”及其部分特化 . template <class ...Types> struct X {}; // #1 template <class T1> struct X<T1> {}; // #2 template <class T1, class ...Types> struct ... -
6 votesanswersviews
继承嵌套模板类的专业化
以下源代码来自:Understanding partial specialization of inherited nested class templates #include <type_traits> struct Base { template<class U, class _ = void> struct Inner: std::true_type {};... -
16 votesanswersviews
类模板特化优先级/歧义
在尝试实现依赖于可变参数模板的一些事情时,我偶然发现了一些我无法解释的事情 . 我将问题归结为以下代码片段: template <typename ... Args> struct A {}; template <template <typename...> class Z, typename T> struct test; template <tem... -
6 votesanswersviews
成员模板变量专门化
一个类可以包含一个必须是静态的成员模板变量: class B { public: template <typename X> static X var; B() { std::cout << "Create B " << __PRETTY_FUNCTION__ <&... -
5 votesanswersviews
无法专门化功能模板
这是家庭作业,虽然已经提交了不同的方法 . 我从Visual Studio 2008获得以下内容 error C2893: Failed to specialize function template 'void std::sort(_RanIt,_RanIt,_Pr)' 代码如下 main.cpp Database<> db; db.loadDatabase();... -
24 votesanswersviews
模板类中模板函数的C专业化
什么是专门化模板类中的模板函数的C语法?例如,考虑我有以下两个类及其用法 . 我希望能够为不同类型提供方法X :: getAThing()的专门实现 . 例如:int,std :: string,任意指针或类等 . template <class c1> class X { public: template<typename returnT> returnT getA... -
0 votesanswersviews
访问专用模板的私有/继承成员变量
我正在尝试使用模板创建一个可以表示不同类型图像的类 . 为此,我创建了一个通用基类(永远不应该初始化),其中template参数定义了像素值的存储方式(主要是 float 或 unsigned char ) . // Image.h #pragma once template<typename T> class Image { public: Image () : widt... -
2 votesanswersviews
部分模板专业化使用不完整类型无效c
我正在尝试专门化一个类方法 foo() . 这适用于完整的模板专业化 . 但是,这不适用于部分模板专业化 . 这里是在GCC和Clang上编译好的示例代码: #include <iostream> #include <string> template <typename Key, typename Value> struct SimpleKey { ... -
17 votesanswersviews
可变参数模板模板参数可以是部分专用的吗?
考虑以下程序: template<template<typename ...> class> struct foo {}; template<template<typename> class C> struct foo<C> {}; int main() {} Clang拒绝了它的错误: 类模板部分特化不会专门化任何模板参数 即...