Я создал свой собственный тип без компаратора и без специализации std::numeric_limits
. Несмотря на это, по какой-то причине std::numeric_limits<MyType>
компилируется отлично. Почему комитет стандартов С++ определил шаблон numeric_limits
таким образом, чтобы он был действителен для всех типов, включая нечисловые типы?
Пример кода ниже:
#include <iostream>
#include <limits>
using namespace std;
// This is an int wrapper that defaults to 666 instead of 0
class A {
public:
int x;
public:
A() : x(666) {}
};
int main() {
A a = std::numeric_limits<A>::max();
A b = std::numeric_limits<A>::max();
std::cout << a.x << "\n" << b.x;
// your code goes here
return 0;
}