Skip to content

nlohmann::basic_json::operator>=

// until C++20
booloperator>=(const_referencelhs,const_referencerhs)noexcept;// (1)
template<typenameScalarType>
booloperator>=(const_referencelhs,constScalarTyperhs)noexcept;// (2)
template<typenameScalarType>
booloperator>=(ScalarTypelhs,constconst_referencerhs)noexcept;// (2)
  1. Compares whether one JSON value lhs is greater than or equal to another JSON value rhs according to the following rules:

    • The comparison always yields false if (1) either operand is discarded, or (2) either operand is NaN and the other operand is either NaN or any other number.
    • Otherwise, returns the result of !(lhs<rhs) (see operator<).
  2. Compares whether a JSON value is greater than or equal to a scalar or a scalar is greater than or equal to a JSON value by converting the scalar to a JSON value and comparing both JSON values according to 1.

Template parameters

ScalarType
a scalar type according to std::is_scalar<ScalarType>::value

Parameters

lhs (in)
first value to consider
rhs (in)
second value to consider

Return value

whether lhs is greater than or equal to rhs

Exception safety

No-throw guarantee: this function never throws exceptions.

Complexity

Linear.

Notes

Comparing NaN

NaN values are unordered within the domain of numbers. The following comparisons all yield false: 1. Comparing a NaN with itself. 2. Comparing a NaN with another NaN. 3. Comparing a NaN and any other number.

Operator overload resolution

Since C++20 overload resolution will consider the rewritten candidate generated from operator<=>.

Examples

Example

The example demonstrates comparing several JSON types.

#include<iostream>
#include<nlohmann/json.hpp>
usingjson=nlohmann::json;
intmain()
{
// create several JSON values
jsonarray_1={1,2,3};
jsonarray_2={1,2,4};
jsonobject_1={{"A","a"},{"B","b"}};
jsonobject_2={{"B","b"},{"A","a"}};
jsonnumber_1=17;
jsonnumber_2=17.0000000000001L;
jsonstring_1="foo";
jsonstring_2="bar";
// output values and comparisons
std::cout<<std::boolalpha;
std::cout<<array_1<<" >= "<<array_2<<" "<<(array_1>=array_2)<<'\n';
std::cout<<object_1<<" >= "<<object_2<<" "<<(object_1>=object_2)<<'\n';
std::cout<<number_1<<" >= "<<number_2<<" "<<(number_1>=number_2)<<'\n';
std::cout<<string_1<<" >= "<<string_2<<" "<<(string_1>=string_2)<<'\n';
}

Output:

[1,2,3]>=[1,2,4]false
{"A":"a","B":"b"}>={"A":"a","B":"b"}true
17>=17.0000000000001false
"foo">="bar"true

See also

Version history

  1. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.
  2. Added in version 1.0.0. Conditionally removed since C++20 in version 3.11.0.

AltStyle によって変換されたページ (->オリジナル) /