代码之家  ›  专栏  ›  技术社区  ›  PyOPTProblem

c++如何模板化模板参数的部分实例化?

  •  0
  • PyOPTProblem  · 技术社区  · 6 月前

    我有一个类模板,它接受模板模板参数

    template<template<class> typename T>
    struct S {};
    

    以及一个包含2个模板参数的类模板

    template<size_t i, typename T>
    struct A {};
    

    有什么方法可以实例化吗 S 部分专业化 A 在上面 i 参数,这样我就可以写以下内容了?

    S<A< /*someNumber*/ >> someStruct;
    

    我可以创建别名模板

    template<typename T>
    using Inner = A<5, T>;
    

    并实例化 S 用它

    S<Inner> SInner;
    

    但这只适用于固定值5,因为别名模板不能部分专用。也许有什么办法 Inner 模板?

    1 回复  |  直到 6 月前
        1
  •  1
  •   Jarod42    6 月前

    您可能会以不同的方式组织代码:

    template <size_t i>
    struct A_outer {
        template <typename T>
        struct A{};
    };
    
    S<A_outer<42>::A> s;
    

    Demo