【发布时间】:2019-04-24 10:09:48
【问题描述】:
请告诉我为什么this answer 有效。
- enable_if 发生了什么我们可以在此之后省略它? (Foo struct 的进一步使用不需要模板参数中的 enable_if)
- 代码不应该是这样的吗:
原始版本:
template <typename Policy,
typename = typename std::enable_if<std::is_base_of<BasePolicy, Policy>::value>::type >
struct Foo;
template <typename Policy>
struct Foo {
Foo();
};
template <typename Policy>
Foo<Policy>::Foo() {
}
编辑版本:
template <typename Policy,
typename = typename std::enable_if<std::is_base_of<BasePolicy, Policy>::value>::type >
struct Foo;
template <typename Policy>
struct Foo<Policy> { // <Policy> added!
Foo();
};
template <typename Policy>
Foo<Policy>::Foo() {
}
【问题讨论】:
-
“enable_if 之后我们可以省略它会发生什么?” - 之后呢? ...请你把你的问题说清楚一点吗?
-
如果您还包括原始代码以使差异更容易访问会很好
-
我说清楚了,加上原代码
-
谁说原版必须工作?这是作者的错误。
-
它的前面有
<Policy>,但作者在新版本中删除了它。检查编辑历史记录和 cmets。
标签: c++ c++11 templates enable-if