gpt4 book ai didi

c++ - 从 template 派生所有 template 实例

转载 作者:太空狗 更新时间:2023-10-29 20:40:12 27 4
gpt4 key购买 nike

是否可以从以基类为参数的实例化派生所有以派生类为参数的模板实例化?

在代码中:

class Base{};

class Derived1 : Base{};

class Derived2 : Base{};

template<typename T>
class Templ /*: Templ<Base> if T derives from Base*/
{};

如何做到这一点?

最佳答案

Templ<Base> 进行特化,然后将 SFINAE 与 std::is_base_of 一起使用从 Templ<Base> 派生一个单独的特化.

template<typename T, typename V = void>
class Templ
{};

template<>
class Templ<Base>
{};

template<bool B, typename R = void>
using enable_if_t = typename std::enable_if<B, R>::type;

template<typename T>
class Templ<T, enable_if_t<std::is_base_of<Base, T>::value>>
: public Templ<Base>
{};

关于c++ - 从 template<base> 派生所有 template<derived> 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25060065/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com