c++ 我如何特殊化这个模板类?

t98cgbkg  于 2023-02-10  发布在  其他
关注(0)|答案(1)|浏览(108)

假设我有一个类

template<template<typename, std::size_t> class Child, typename T, std::size_t D>
class tuple;

如何将其专门化为D = 2类型只有一个typename模板参数的Child
我试过了

template<template<typename> class Child>
struct foo
{
    template<typename U, typename V>
    using type = Child<U>;
};

template<template<typename> class Child, typename T>
class tuple<typename foo<Child>::type, T, 2>;

编译器说模板参数Child是不可推导的...

bkhjykvo

bkhjykvo1#

一个只有一个typename模板参数的子类型?
你不能。你的原始模板要求一个模板参数有两个模板参数,一个是类型参数,另一个是非类型参数。一个只能带一个参数的模板不匹配(带两个 type 模板参数的template<typename U, typename V>也不匹配)。
尝试通过类中的别名模板成员进行间接调用也是行不通的,因为嵌套名称是非推导上下文。
(Also Child不是类型,而是模板。)

相关问题