C ++模板'使用'基于参数类编译时错误

时间:2017-09-28 21:43:38

标签: c++ templates

我想深入了解模板代码,但是我在这里用简化代码重现了一个错误:

namespace impl {
    template<class T>
    struct DefaultPolicy {
        static T unwrap(T value) { return value; };
    };
}

struct DefaultPolicy {
    template <class T> using type = typename impl::DefaultPolicy<T>;
};

template <class T, class Policy>
auto unwrap(T value, Policy) {
    using policy_t = typename Policy::type<T>;
    return policy_t::unwrap(value);
};

int main() {
    unwrap(42, DefaultPolicy{});
}

我不知道如何纠正看起来像基本语法错误:

error: expected ';' before '<' token
     using policy_t = typename Policy::type<T>;
                                           ^

但是,如果我用'DefaultPolicy'替换'Policy'类型(编译器应该做什么......或多或少?),我没有错误。

那么,是否有一个简单的语法解决方案,或者我是否尝试做一些不可能的事情?

0 个答案:

没有答案