C++ 为什么';t C++;标准库包括std::min、std::max的非常量版本?

C++ 为什么';t C++;标准库包括std::min、std::max的非常量版本?,c++,C++,我模模糊糊地记得我在某处看到过关于这个问题的讨论,但我现在找不到;“non-const min max c++”和类似的变体没有给出相关的结果 为什么C++标准库不包括以下的非const过载: STD::MIN < /> >(类似于 STD:MAX)?< /P> 这种过载会导致什么问题?这是霍华德·E·希南在年提出的,根据他的说法,被拒绝了 在同一次讨论中,Howard提到了这些被拒绝的原因: 当时人们认为实施过程过于复杂。虽然 我还没有试过,几乎可以肯定的是,这可以用更简单的方法来完成 今天的

我模模糊糊地记得我在某处看到过关于这个问题的讨论,但我现在找不到;“non-const min max c++”和类似的变体没有给出相关的结果

<>为什么C++标准库不包括以下的非const过载:<代码> STD::MIN < /> >(类似于<代码> STD:MAX)?< /P>
这种过载会导致什么问题?

这是霍华德·E·希南在年提出的,根据他的说法,被拒绝了

在同一次讨论中,Howard提到了这些被拒绝的原因:

当时人们认为实施过程过于复杂。虽然 我还没有试过,几乎可以肯定的是,这可以用更简单的方法来完成 今天的语言/图书馆。至少是所谓的“推广” 在今天的实现中称为“std::common_type”

部分原因是我试图解决几个问题 同时:

  • 能够分配到min的结果中(但仅在安全的情况下)
  • 在编译时消除悬而未决的引用危险
  • 支持异构积分比较,在编译时剔除危险的组合
  • 只支持移动类型
  • 正如T.C.在同一次讨论中提到的,提案也需要不违反规范,例如:

    int i = 1; std::min(i, 0);
    


    如果您对解决讨论中提到的问题感兴趣,并编写一个方案+示例实现,那么这最终可能会成为标准。

    如果两者的值相同,那么哪个值会得到更新?第一个值,根据std::min的标准行为,请参阅。“返回值:a和b中的较小值。如果值相等,则返回a。”很简单,将其称为
    minref
    ,未重载
    min
    @cheers和hth.-Alf:该名称似乎暗示
    min
    不返回引用。然后将其命名为
    minnonconstref
    :p有没有讨论过为什么在第一个版本的min/max中没有提供此功能?简单的疏忽?@engf-010-这是,但不是这里的问题。
    std::min(x, y) += 1;
    
    int i = 1; std::min(i, 0);