代码之家  ›  专栏  ›  技术社区  ›  Michael Ulm

std::min/std::max只保证一次评估

  •  3
  • Michael Ulm  · 技术社区  · 15 年前

    C++标准是否保证调用

    c = std::min(f(x), g(x));
    

    只对函数f和g求值一次?

    1 回复  |  直到 15 年前
        1
  •  13
  •   Benoît photo_tom    15 年前

    对。因为std::min是一个函数,所以f(x)和g(x)只计算一次。返回的值不会被复制。参见函数的原型:

    template<typename T>     
    const T& min ( const T& a, const T& b );
    

    #define MIN(A,B) ((A)<(B))?(A):(B)