将概念传递给功能
由于将概念定义为编译时谓词,是否还可以将这些谓词实际重用于编译时算法?例如,可以检查元组中的所有类型是否都符合概念?据我所知,不可能以任何方式将概念传递给函数,这使我重新回到在这些情况下使用模板。 #include <type_traits> template<typename T> concept FloatLike = std::is_same_v<T, float>; struct IsFloat { template<typename U> constexpr static bool test() { return FloatLike<U>; } }; template<typename Predicate, typename... T> constexpr bool all_types() { return (Predicate::template test<T>() && ...); } int main() { static_assert(all_types<IsFloat, float, float>()); static_assert(!all_types<IsFloat, float, int>()); } 我想做的就是这样,所以我不必一直包装这个概念就可以使用它: template<concept …