#include <xtd/console>
#include <xtd/icomparable>
 
 
public:
  explicit foo(int value) : value_ {value} {}
 
  int compare_to(const foo& value) const noexcept override {
    if (value_ < value.value_) return -1;
    if (value_ > value.value_) return 1;
    return 0;
  }
  
private:
  int value_ = 0;
};
 
auto main() -> int {
  console::write_line("foo {{42}}.compare_to(foo {{42}}) = {}", foo {42}.compare_to(foo {42}));
  console::write_line("foo {{42}}.compare_to(foo {{41}}) = {}", foo {42}.compare_to(foo {41}));
  console::write_line("foo {{42}}.compare_to(foo {{43}}) = {}", foo {42}.compare_to(foo {43}));
  console::write_line();
 
  console::write_line("foo {{42}} <=> foo {{42}} = {}", foo {42} <=> foo {42});
  console::write_line("foo {{42}} <=> foo {{41}} = {}", foo {42} <=> foo {41});
  console::write_line("foo {{42}} <=> foo {{43}} = {}", foo {42} <=> foo {43});
  console::write_line();
  
  console::write_line("foo {{42}} <= foo {{42}} = {}", foo {42} <= foo {42});
  console::write_line("foo {{42}} <= foo {{41}} = {}", foo {42} <= foo {41});
  console::write_line("foo {{42}} <= foo {{43}} = {}", foo {42} <= foo {43});
  console::write_line();
 
  console::write_line("foo {{42}} < foo {{42}} = {}", foo {42} < foo {42});
  console::write_line("foo {{42}} < foo {{41}} = {}", foo {42} < foo {41});
  console::write_line("foo {{42}} < foo {{43}} = {}", foo {42} < foo {43});
  console::write_line();
 
  console::write_line("foo {{42}} >= foo {{42}} = {}", foo {42} >= foo {42});
  console::write_line("foo {{42}} >= foo {{41}} = {}", foo {42} >= foo {41});
  console::write_line("foo {{42}} >= foo {{43}} = {}", foo {42} >= foo {43});
  console::write_line();
 
  console::write_line("foo {{42}} > foo {{42}} = {}", foo {42} > foo {42});
  console::write_line("foo {{42}} > foo {{41}} = {}", foo {42} > foo {41});
  console::write_line("foo {{42}} > foo {{43}} = {}", foo {42} > foo {43});
}
 
Defines a generalized comparison method that a value type or class implements to create a type-specif...
Definition icomparable.hpp:21
 
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.hpp:10