仅限MSVC出错:使用类模板需要模板参数列表

时间:2017-04-30 12:13:38

标签: c++ templates c++14

这对于clang和gcc都编译没有错误,但在MSVC中失败:(compiler explorer

// detection idiom

template <class...>
using void_t = void;

template <class Void, template <class...> class Op, class... Args>
struct detector_base
{
     using type = void;
};

template <template <class...> class Op, class... Args>
struct detector_base<void_t<Op<Args...>>, Op, Args...>
{
    using type = Op<Args...>;
};

template <class T>
using check = decltype(T::x);

template <typename T>
struct type {};

using dt = typename detector_base<void, check, int>::type; // this is void
using t = type<dt>;
// ^--- 't': use of class template requires template argument list

将检测到的类型与任何模板类型一起使用时会发生这种情况。这是编译器错误,还是由于缺乏支持(如果是,为什么)?

0 个答案:

没有答案