gpt4 book ai didi

C++ 概念等同于 std::decay?

转载 作者:行者123 更新时间:2023-12-02 15:47:00 25 4
gpt4 key购买 nike

我是概念新手。据我了解the concept library列出所有可用的标准概念。然而,似乎没有像 std::decay 这样的东西?比较以下一般用例,我想将方法​​的输入限制为类专门化类型:

Demo

#include <type_traits>
#include <concepts>

template <typename T>
struct some_struct
{
template <typename U, typename = std::enable_if_t<std::is_same_v<std::decay_t<U>, T>>>
void do_something(U obj) {
return ;
}
};

int main()
{
some_struct<int> obj;

obj.do_something(0);
}

我怎样才能用概念来完成这个?

最佳答案

您可以添加这样的概念:

template <typename U, typename T>
concept DecaysTo = std::same_as<std::decay_t<U>, T>;

这将允许:

template <DecaysTo<T> U>
void do_something(U&&);

请注意,这仅在使用转发引用时才真正有意义。在参数类型为 U 的原始示例中, std::decay_t<U>只是U , 所以 DecaysTo<T>减少到 std::same_as<T> .它仍然是正确的,只是不必要地涉及。

关于C++ 概念等同于 std::decay?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73829793/

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