gpt4 book ai didi

c++ - 是否可以为模板化类型专门化模板?

转载 作者:太空宇宙 更新时间:2023-11-03 10:32:51 25 4
gpt4 key购买 nike

对于我的程序,我需要定义一个可以解决问题或嵌套问题的求解器类。

template< typename ProblemT >
struct Solver {
static void a() {
ProblemT::func();
}
};

template< typename < typename SubT> ProblemT >
struct Solver<ProblemT< SubT> > {
static void a() {
ProblemT::func();
SubT::func();
}
};

用法:

Solver<Problem1> solver;
Solver<Problem2<Problem3> > nested_solver;

Solver 的专用版本中,我需要知道 ProblemTSubT 类型,以便正确定义类型并调用正确的功能。

只是简单的错误还是无法定义这样的类?

最佳答案

您可以使用模板模板参数执行此操作:

template<template <typename> class ProblemT, typename SubT>
struct Solver<ProblemT<SubT>>
{
...
};

// And you use it like this
Solver<ProblemTemplate<SubProblem>> solver;

关于c++ - 是否可以为模板化类型专门化模板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11722604/

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