假设我有一个类
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
是不可推导的...
1条答案
按热度按时间bkhjykvo1#
一个只有一个typename模板参数的子类型?
你不能。你的原始模板要求一个模板参数有两个模板参数,一个是类型参数,另一个是非类型参数。一个只能带一个参数的模板不匹配(带两个 type 模板参数的
template<typename U, typename V>
也不匹配)。尝试通过类中的别名模板成员进行间接调用也是行不通的,因为嵌套名称是非推导上下文。
(Also
Child
不是类型,而是模板。)