【发布时间】:2019-05-10 03:11:02
【问题描述】:
在提炼概念时,标准中一贯的做法是完整地写出要提炼的概念。例如,在[concepts.integral] 中,SignedIntegral 精炼Integral,如下所示:
template<class T>
concept Integral = is_integral_v<T>;
template<class T>
concept SignedIntegral = Integral<T> && is_signed_v<T>;
为什么提炼的概念不能写成:
template<Integral T>
concept SignedIntegral2 = is_signed_v<T>;
SignedIntegral2 似乎与SignedIntegral 具有相同的明显含义,但它甚至无法在 clang 上编译。这是有原因的吗?
【问题讨论】:
标签: c++ c++-concepts c++20