为什么我不能得到像这样的模板的第一个参数?

时间:2018-03-25 21:18:37

标签: c++ templates template-meta-programming template-deduction

此代码

template<class>
struct template_arg;

template<class T, template<T> class Template, T Value>
struct template_arg<Template<Value> >
{
    static T value() { return Value; }
};

template<int>
struct const_int { };

int main()
{
    return template_arg<const_int<0> >::value();
}

导致以下错误:

error: template parameters not deducible in partial specialization:
 struct template_arg<Template<Value> >
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

但是,我不明白为什么编译器无法推断出这个模板参数。

这背后的原因是什么?有一个很好/通用的解决方法吗?

0 个答案:

没有答案