【发布时间】:2018-03-30 14:36:58
【问题描述】:
我有一个简单的案例:
#include <iostream>
#include <type_traits>
template<typename T>
struct Handle_ {
T vlue;
};
template<typename T>
using Handle = Handle_<std::enable_if_t<true, T>>;
template<typename T>
void fooo(Handle<T> h, int a) {
}
int main() {
Handle<int> a;
fooo(a, 4);
}
无法编译,因为 fooo 的模板参数推导失败。
如果从 Handle 使用 std::enable_if_t 被删除 - 它可以工作。
template<typename T>
using Handle = Handle_<T>;
在 this using 中创建一些依赖项使其无法演绎的原因是什么?
【问题讨论】:
标签: c++ templates type-deduction