C++ 这种模板专业化背后的直觉?

C++ 这种模板专业化背后的直觉?,c++,c++11,templates,c++17,variadic-templates,C++,C++11,Templates,C++17,Variadic Templates,你能帮我理解这种模板专门化背后的直觉吗 template<typename T, typename _ = void> struct is_list : std::false_type {}; template<typename... Ts> struct is_list_helper {}; template<typename T> struct is_list< T, std::conditional_t<

你能帮我理解这种模板专门化背后的直觉吗

template<typename T, typename _ = void>
struct is_list : std::false_type {};

template<typename... Ts>
struct is_list_helper {};

template<typename T>
struct is_list<
        T,
        std::conditional_t<
                false,
                is_list_helper<
                typename T::size_type,  // written only for example 
                decltype(std::declval<T>().size()), // written only for example
                >,
                void
        >
> : public std::true_type {};


模板
结构是\u列表:std::false\u类型{};
模板
结构是_list_helper{};
模板
结构是列表<
T
std::有条件的<
假,,
是列表帮助器吗<
typename T::size\u type,//仅为示例编写
decltype(std::declval().size()),//仅为示例编写
>,
无效的
>
>:public std::true_type{};

is\u容器
应该是
is\u列表
。。。这是一个普通构造的复杂版本,它是
struct is_list:true_type{}
is\u容器
应该是
is\u列表
。。。这是一个普通构造的复杂版本,它是
struct is_list:true_type{}