“controlled_runge_kutta”不是 class 模板
‘controlled_runge_kutta’ is not a class template
这是以下代码中的已知错误:
‘controlled_runge_kutta’ is not a class template
在下面的代码中:
template<
class ErrorStepper ,
class ErrorChecker ,
class Resizer
>
class controlled_runge_kutta< ErrorStepper , ErrorChecker , Resizer , explicit_error_stepper_tag >
{
public:
};
int main()
{
return 0;
}
我知道为什么会出现此错误。但我的问题是,它在第 146 行 github 的原始 boost 库中如何工作?
谢谢。
查看第 109 行。
template<
class ErrorStepper ,
class ErrorChecker = default_error_checker< typename ErrorStepper::value_type ,
typename ErrorStepper::algebra_type ,
typename ErrorStepper::operations_type > ,
class Resizer = typename ErrorStepper::resizer_type ,
class ErrorStepperCategory = typename ErrorStepper::stepper_category
>
class controlled_runge_kutta;
现在,有模板的声明 class,在第 146 行中只有这个 class 的部分特化。
如果语法是:
template <template-parameters...> class NAME { ... };
那就是 "master template definition"。如果是:
template <template-parameters...> class NAME<parameter-spec> { ... };
然后它是部分模板特化(为参数的特殊情况定义 "mapping" 的二级定义。
如果尚未提供该名称(class 或函数模板)的主模板定义,则不能声明部分模板特化。
因此,取决于您要申报的内容。如果只是一个模板 - 然后删除 class 名称后 <...> 中的所有内容。如果是专业化,那么请先定义模板本身。
template<...>
语句在主定义和专业化中的含义不同。在主定义中,它定义了 "signature"(应该如何调用 "instantiation"),在专业化中,它只是提供一些内部使用的名称。
这是以下代码中的已知错误:
‘controlled_runge_kutta’ is not a class template
在下面的代码中:
template<
class ErrorStepper ,
class ErrorChecker ,
class Resizer
>
class controlled_runge_kutta< ErrorStepper , ErrorChecker , Resizer , explicit_error_stepper_tag >
{
public:
};
int main()
{
return 0;
}
我知道为什么会出现此错误。但我的问题是,它在第 146 行 github 的原始 boost 库中如何工作?
谢谢。
查看第 109 行。
template<
class ErrorStepper ,
class ErrorChecker = default_error_checker< typename ErrorStepper::value_type ,
typename ErrorStepper::algebra_type ,
typename ErrorStepper::operations_type > ,
class Resizer = typename ErrorStepper::resizer_type ,
class ErrorStepperCategory = typename ErrorStepper::stepper_category
>
class controlled_runge_kutta;
现在,有模板的声明 class,在第 146 行中只有这个 class 的部分特化。
如果语法是:
template <template-parameters...> class NAME { ... };
那就是 "master template definition"。如果是:
template <template-parameters...> class NAME<parameter-spec> { ... };
然后它是部分模板特化(为参数的特殊情况定义 "mapping" 的二级定义。
如果尚未提供该名称(class 或函数模板)的主模板定义,则不能声明部分模板特化。
因此,取决于您要申报的内容。如果只是一个模板 - 然后删除 class 名称后 <...> 中的所有内容。如果是专业化,那么请先定义模板本身。
template<...>
语句在主定义和专业化中的含义不同。在主定义中,它定义了 "signature"(应该如何调用 "instantiation"),在专业化中,它只是提供一些内部使用的名称。