Здравствуйте, Erop, Вы писали:
E>Здравствуйте, _hum_, Вы писали:
__>>насколько я себе представлял, вы можете только построить на основе уже существующих свои (наподобие, использовать class CFixedPointReal{uint16_t m_val; <набор операторов>}, чтобы организовать тип вещественных чисел с фиксированной точкой. но это уже будет не фундаментальный тип)
E>Вот, скажем, IntRange<5, 65000>Автор: Erop
Дата: 29.04.08
в твоём понимании фундаментальный или нет?
конечно, нет, потому что его значения строятся на базе значений типа int (вы не сможете определить этот тип без использования int)
__>>разве часто? а можно пример?
E>Ну там база к потомку, брат к брату через dyn_cast и т. д...
это только для объектов наследуемых классов. да и то, наверное, считается не лучшим кодом (для этого есть механизм виртуальных функций)
E>>>А ещё вот такая конструкция, как std::vector<int>& в std::vector<const int>& тебе?
__>>в каком смысле? при чем здесь вектор?
E>Ну если хочу так привести, то что делать?
я все-таки не понял, к чему вы клоните. я же говорю, с производными сложными типами приведение работает плохо (и, имхо, не нужно в большинстве случаев).
__>>>>нет. простые (базовые, фундаментальные) — это те, которые не предполагают в своем определении задействования других типов.
E>Это оно:enum FType { zerro, one, two };
?
нет, не оно. enum использует подоснову int.
__>>есть же вроде uint64_t
E>Ну он же где-то есть, а где-то надо то, что ты называешь нефундаментальный писать...
E>Обычный С++-код такую операцию переносит легко...
речь не об этом, а о том, что есть кирпичики (фундаментальные типы), на базе которых можно построить все остальное.
и достаточно наделить эти кирпичики расширенными возможностями (как то идентификацией типов), чтобы это можно было протащить, при надобности, дальше.