gpt4 book ai didi

c++ - 以 enable_if 作为模板参数的模板类方法定义

转载 作者:可可西里 更新时间:2023-11-01 15:39:15 24 4
gpt4 key购买 nike

我问了this question早些时候在哪里 a solution被提出。就问题而言,解决方案很棒,但现在我对如何定义类的方法 outside 感到困惑,即我想在 .inl 中定义方法 文件。这种情况下的语法是什么?

明确一点,对于模板类,方法定义为:

template <typename T>
struct Foo
{
Foo();
};

// C-tor definition
template <typename T>
Foo<T>::Foo()
{
}

我如何为模板类定义方法,将 enable_if 作为参数之一?

template <typename Policy, enable_if< is_base<BasePolicy, Policy>::value >::type >
struct Foo
{
  Foo();
};

// C-tor definition -- ???

最佳答案

从表面上看,您想按照以下方式做一些事情:

template <typename Policy,
typename = typename std::enable_if<std::is_base_of<BasePolicy, Policy>::value>::type >
struct Foo;

template <typename Policy>
struct Foo<Policy> {
Foo();
};

template <typename Policy>
Foo<Policy>::Foo() {
}

这在几个地方偷偷利用了默认参数:不要混淆,有一个隐式 void 坐在几个地方。

关于c++ - 以 enable_if 作为模板参数的模板类方法定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9659955/

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