#include<complex>


template <class T> inline 
void ignore_unused_variable_warning(const T&) {}

template <class TT>
void require_boolean_expr(const TT& t) {
  bool x = t;
  ignore_unused_variable_warning(x);
  /*uÅ¼ywa zmiennej {\tt x} aby kompilator nie generowaÅ? ostrzeÅ¼enia */
}


template<typename T> struct ComparableConcept {
void constraints() {
  require_boolean_expr( a > b);
  require_boolean_expr( a < b);
};
T a,b; 
};

template <class Concept>
inline void function_requires() {
  void (Concept::*x)() = &Concept::constraints;
  ignore_unused_variable_warning(x);
}

main() {
 function_requires<ComparableConcept<int> >();
 //function_requires<ComparableConcept<std::complex> >();/*bÅ?ad*,/
}

