gpt4 book ai didi

c++ - C++标准库中有算术类型的概念吗?

转载 作者:行者123 更新时间:2023-12-02 01:54:37 27 4
gpt4 key购买 nike

我一直在查看 C++ reference 上的概念库我找不到算术类型的概念。我在 p0898 中也找不到它。我认为这样的概念会非常有帮助。已执行的操作:

template <typename T>
T some_function(T arg) requires std::integral<T> || std::floating_point<T>
{ /* functions body */ }

我可以这样做:

template <std::arithmetic T>
T some_function(T arg)
{ /* functions body */ }

我显然可以自己定义它,这并不难(例如 template <typename T> concept arithmetic = std::integral<T> || std::floating_point<T>; ),但在我看来,这样的基本概念应该在标准库中定义。它不存在有什么充分的理由吗?或者有什么建议可以添加吗?

最佳答案

Is there any good reason why it's not there? Or is there any proposal to add it?

没有任何建议添加它,但我希望看到一条仅建议 template <typename T> concept arithmetic = std::is_arithmetic_v<T>; 的 NB 评论(这并不能保证 C++20 会有这个概念,只是至少会被考虑)。

标准库概念是由 Ranges 提案添加的,并由某些概念的算法需求驱动。 integral出现了很多,但我猜arithmetic从来没有这样做过,所以它从来没有被添加过。如果你看看 N4382 (从2015年初开始),你可以看到Integral (以及 SignedIntegralUnsignedIntegral )从一开始就在那里......而甚至 FloatingPoint后来又添加了。 (P0631,2019 年 7 月……甚至添加浮点概念的论文也没有提及 arithmetic )

<小时/>

当然,然后你会遇到一个有趣的问题:它是否应该严格基于该类型特征,或者应该是 template <typename T> concept arithmetic = integral<T> || floating_point<T>;这样 integralfloating_point概念包含arithmetic 。大概?也许?

关于c++ - C++标准库中有算术类型的概念吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58067259/

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