1
void_t“可以实现概念”吗?
我正在观看Walter Brown在CppCon2014上有关模板元编程的第二部分,在此期间他讨论了他的新颖void_t<>结构的用法。彼得·索默拉德(Peter Sommerlad)在演讲中问了我一个不太明白的问题。(链接直接指向问题,正在讨论的代码是在此之前直接进行的) 索默拉德问 沃尔特,这是否意味着我们实际上可以立即实施精简概念? 沃尔特回应 哦耶!我已经完成了...它没有完全相同的语法。 我了解这次交流是关于Concepts Lite。这种模式真的那么通用吗?无论出于什么原因,我都没有看到它。有人可以解释(或素描)这样的样子吗?这仅仅是关于enable_if和定义特征,还是提问者指的是什么? 该void_t模板定义如下: template<class ...> using void_t = void; 然后,他使用它来检测类型语句是否格式正确,并使用它来实现is_copy_assignable类型特征: //helper type template<class T> using copy_assignment_t = decltype(declval<T&>() = declval<T const&>()); //base case template template<class T, class=void> struct is_copy_assignable : std::false_type {}; //SFINAE version only for types where copy_assignment_t<T> is well-formed. template<class T> …