char>(p); } III:- В этом приме
Автор admin
Пятница, 22 мая 2009 11:32
char>(p); } III:- В этом примере определяется шаблон функции safe_cast<>() для обнаружения сужающих преобразований, когда тип исходного объекта больше целевого типа, получаемого в результате преобразования. Если тип целевого объекта оказывается меньше, пользователь во время компиляции получает сообщение о попытке сужающего преобразования. Обратите внимание на любопытную особенность шаблона StaticCheck: к специализации StaticCheck
можно преобразовать все, что угодно (благодаря многоточию в конструкторе), а к специализации StaticCheck нельзя преобразовать ничего, потому что для этой специализации отсутствуют преобразования. Идея заключается в том, чтобы попытаться создать экземпляр нового класса и преобразовать его в объект StaticCheck
во время компиляции, если проверяемое условие истинно, или в объект StaticCheck, если условие ложно. Поскольку оператор sizeof выполняет свою работу на стадии компиляции, он задействуется для попытки выполнения преобразования. Если условие ложно, компилятор сообщает, что он не знает, как преобразовать тип нового класса к StaticCheck (дополни
Комментарии закрыты.
Последние комментарии