使用指令专业化的模板

问题描述 投票:2回答:1

虽然允许模板特化,但是不能使用指令专门化模板。无论如何要实现它的一些技巧是什么?

e.g:


还行吧 :

template <class A>
class MyTemplate { ... };

template <>
class MyTemplate<int> { ... };

这不是:

template <class A>
using Alias = SomeClass<A>;

template <>
using Alias<int> = MyBigIntClass;

编辑:

目标是在客户端代码中使用Alias<int>,并将其作为引擎盖下的MyBigIntClass

c++ templates alias partial specialization
1个回答
2
投票

这是技巧(使用模板专业化):

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
}
© www.soinside.com 2019 - 2024. All rights reserved.