gpt4 book ai didi

c++ - 为什么在定义这个 C++ 概念时会出错?

转载 作者:行者123 更新时间:2023-12-03 22:58:51 24 4
gpt4 key购买 nike

我正在关注 Josh Lospinoso 的 C++ 速成类(class),我正在尝试向我展示如何使用概念来约束方法参数的示例,并且还希望我使用 type_traits。但是,我收到错误消息,指出缺少参数列表并且类型说明符的组合无效。这是概念和方法:

template <typename T>
concept bool Averageable() {
return std::is_default_constructible<T>::value && requires (T a, T b) {
{ a += b } -> T;
{ a / size_t{ 1 } } -> T;
};
}

template <Averageable T>
T mean(const T* values, size_t length) {
T result{};
for (size_t i{}; i < length; i++) {
result += values[i];
}
return result / length;
}

最佳答案

我认为您以错误的方式定义了您的概念。它应该是这样的:

template <typename T>
concept Averageable =
std::is_default_constructible<T>::value && requires (T a, T b) {
{ a += b } -> std::same_as<T>;
{ a / size_t{ 1 } } -> std::same_as<T>;
};
DEMO

关于c++ - 为什么在定义这个 C++ 概念时会出错?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67832237/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com