使用指令专门化的模板
Template using directive specialization
虽然模板专门化是允许的,但是不能使用指令专门化模板。有什么技巧可以达到这个目的呢?
e。g:
this is ok:
template <class A>
class MyTemplate { ... };
template <>
class MyTemplate<int> { ... };
这不是:
template <class A>
using Alias = SomeClass<A>;
template <>
using Alias<int> = MyBigIntClass;
编辑:我们的目标是在客户端代码中使用Alias<int>
,并在底层使用MyBigIntClass
。
技巧是这样的(使用模板专门化):
template <class A>
struct Helper{ //default case
using t = SomeClass<A>; //use void or omit this line to disable default case
};
template <class A>
using Alias = typename Helper<A>::t;
template <>
struct Helper<int>{
using t = MyBigIntClass; //whatever you need
};
int main()
{
Alias<int> a = 0; //It's MyBigIntClass under the hood
}
相关文章:
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 无法编译 rtmidi 测试 cmidiin.cpp 文件, 非法指令
- C++:对不存在的命名空间使用命名空间指令
- 是否可以对零模板参数进行模板专门化
- 函数名是c中该函数的第一条指令的地址吗
- 错误:无效的预处理指令 #i 的意思是 #if?
- 尝试根据类中 typedef 的存在来专门化模板函数
- 组装指令中乘法的下部和上部是什么
- 如何基于模板化类的基类专门化成员函数
- OpenMP 与有序和关键指令并行
- C++中的移动分配出现问题.非法指令: 4.
- 嵌套命名空间的"using"指令,但需要命名内部命名空间
- C++CMake编译指令与
- 使用宏扩展的泛型:为什么指令缓存使用不当?
- 如何在 c++ 中确定一条指令(以字节为单位)在哪里结束,另一条指令从哪里开始?
- AVX 指令中寄存器和指针之间的客观差异
- 如何为指向复杂值的迭代器专门化算法?
- while 循环 c++ 中的非法指令
- 如何在编译时定义C++预处理器指令的值?
- 使用指令专门化的模板