首页 > 解决方案 > 推断外部类型的模板参数

问题描述

假设我有以下模板类:

template <typename T>
struct Hello
{
    struct Hi {};
};

我希望能够创建这样的函数:

template <typename U>
void hello_hi(typename Hello<U>::Hi&)
{}

并像这样使用它:

int main()
{
    hello_hi(Hello<int>::Hi{});
}

但是 C++ 无法推断出类型U,因为它是 of 的模板参数,Hello不是 Hi。有没有什么方法可以U 在不将其明确设置为模板参数的情况下进行推断hello_hi

标签: c++templatesc++17template-argument-deduction

解决方案


推荐阅读