В C ++ я хочу использовать пару больших значений для представления неопределенного числа:
void setUndefined(float& a) {
a = set_undefined_value;
}
bool isUndefined(float a) {
return a > is_undefined_value;
}
Я хочу использовать этот подход для всех числовых типов и из шаблонного кода, поэтому я размышлял по шаблону:
template<typename T>
class Undefined {
public:
static T set_undefined_value() {
NOT_IMPLEMENTED_FOR_THIS_TYPE_YET;
}
static T is_undefined_value() {
NOT_IMPLEMENTED_FOR_THIS_TYPE_YET;
}
};
// Template specialization for all numeric types: ...
Как найти хорошую пару значений для всех числовых типов?
Есть ли, например, каким образом я могу использовать шаблон std :: numeric_limits :: max ()?
Если я запишу неопределенные значения в файл, будут ли они переносимы между компьютерами и операционными системами?
Для чисел с плавающей запятой и двойников выберите битовый шаблон для каждого, который соответствует NaN в IEEE754. Затем вы можете создать макрос для тестирования nan на всех мыслимых компиляторах и со всеми возможными оптимизациями с плавающей запятой.
Для целых чисел со знаком используйте самое отрицательное значение (0x80 …)
Для целых чисел без знака используйте наиболее положительное значение (0xFF …)
Других решений пока нет …