gpt4 book ai didi

C++ 需要带有反向返回类型概念检查的表达式

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

我尝试使用 requires 表达式定义一个概念,该表达式检查类型上是否存在某些成员函数。
我遇到的问题是,必须为返回类型检查插入一个概念,而无需任何前面的 bool 操作,例如“not”。如果需要,这迫使我也为逆写概念,这不是很方便。
有什么我遗漏的或其他好的方法吗?
简单的例子:

template <typename T>
concept IsReference = std::is_reference_v<T>;

template <typename T>
concept HasSomeFunction = requires (T t) {
{t.func()} -> IsReference; /* this is ok */
{t.anotherFunc()} -> (not IsReference); /* this is not ok */
};

最佳答案

这是适用于最新的 gcc 和 clang 的语法。

template <typename T>
concept HasSomeFunction = requires (T t) {
{t.func()} -> IsReference; /* this is ok */
requires !IsReference<decltype(t.anotherFunc())>;
};
Demo
读起来有点难。也许对概念有更多经验的人可以提供更好的解决方案。

关于C++ 需要带有反向返回类型概念检查的表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67719585/

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