С помощью шаблонов можно перенести часть нетривиальных расчетов на этап компиляции. Вот примерпример:
template «int N» class Pow3 { public: enum { result = 3 * Pow3«N-1»::result }; };
template «0» class Pow3 { public: enum { result = 1 }; };
В коде: cout << Pow3«7»::result;
Результат: 2187
Как работает: При инстанциировании шаблонного класса Pow3 компилятор подставляет вместо Pow3::result выражение 3 * Pow3, которое разворачивается в 3 * 3 * Pow3 и т.д. до 3 * 3 * 3 * 3 * 3 * 3 * 3 * Pow3, которое разворачивается по специализации шаблона в 3 * 3 * 3 * 3 * 3 * 3 * 3 * 1. Далее полученное выражение рассчитывается по всем правилам - как константа и подсовывается на этапе исполнения.
Я все больше и больше понимаю, что нихрена не знаю о шаблонах.
Флёр, "Теплые коты"Зима так холодна, так бесприютна и бела, Скоро будет неизбежный дефецит тепла. Начнем спасаться мы от этой теплонищиты, Значит снова будут в моде теплые коты.
Будем гладить всех мурчащих Теплых сонных настоящих, Запуская руки в меховые животы. Переменчивы все вещи в странном мире человечьем, Постоянны мягкие мурчащие коты.
Все бегут домой С холодных улиц и пустых, Значит, снова будут в моде Тёплые коты. Тёплые коты Летят по небу облаками, Мысли переполнены Мурчащими котами.
Когти могут впиться в ногу, Но нога, поверь, не сердце, Кошки так не ранят, Как людишки иногда. Тёплый кот меня утешит, Ляжет на больное место И усну я, обнимая Тёплого кота.
Приходи играть, Хозяйкин свитер обшерстить, Книжку истерзать, Об кресло когти поточить. Приходи ко мне Из мира странных зимних снов, Плюнь на предрассудки, Разбуди своих котов.
Будем гладить всех мурчащих, Тёплых, сонных, настоящих, Запуская руки в меховые животы. Переменчивы все вещи В странном мире человечьем, Постоянны мягкие Мурчащие коты
Когти могут впиться в ногу, Но нога, поверь, не сердце, Кошки так не ранят, Как людишки иногда. Тёплый кот меня утешит, Ляжет на больное место И усну я, обнимая Тёплого кота.
Сегодня исполнилась голубая мечта идиота - я купил себе пневматичку. Ничего особенного, банальный ИЖ-61. Но сколько радости и удовольствия! Хочу еще и оптику на нее поставить, чтобы подглядывать за соседями было удобнее стрелять с моим зрением. Вообще, стрельба оч развивает нервный контроль над телом - заметил, что у меня оч сильно дрожат руки. Вот.
Завтра куплю камуфляж и кеды. Пойду уже с Маратом в качалку. Пора бы - уже год зовет.
Вчера узнал про операцию глазную. Особенно "порадовало": "Чтобы сделать операцию вам нужно направление. Для этого вам необходимо обследоваться, плюс будет учтена динамика изменения зрения." Короче - год-два наблюдений, потом только направление и, очень может быть, операция. Ибо еще и завернуть могут, да.
Так что задумался я: раз операция - штука не близкая, ох, неблизкая, то что ж меня тут держит? Пока что нашел только ожидания и задачи, возлагаемые на меня на работе. М-да.
В общем, ждем НГ и наблюдаем за развитием падения всего сосущего. А там и видно будет.
А поднятые в DLL исключения таки ловятся! А значит, есть справедливость на белом свете.
А знаете, мои дорогие читатели, что на самом деле одиночество? А я вам скажу. Одиночество - это такое противное чувство, что выползает где-то внутри, только дай ему повод. Это не грусть оттого, что поговорить не с кем. И не скука от отсутствия кого-то. Одиночество может накрыть и в толпе людей. И даже более того - оно может выползти, опутывая своими липкими холодными щупальцами сердце своей жертвы, когда оная сидит в кругу близких друзей. Одиночество - это терзаемое сомнениями сердце, а развеять их некому. Одиночество - это страх, затопляющий душу, страх, бороться с которым приходится всегда одному. Одиночество - это беда, когда опереться не на кого.
Хуже всего когда в этот момент вокруг полно людей. Близких людей.
Как уже многие догадались, в отпуск сгонял в Мск. О впечатлениях писать не буду - не люблю описывать. Тем более, уже далеко не раз спрашивали, что да как. В Мск благополучно простыл, да так, что начался фронтит (постоянные боли во вполне конкретной области мозга лба). Кое-как доехал до дома, вроде бы вылечился, да как бы не так. Боли не пропали. Уже неделю никак не схожу к рвачу еще разок, блин. А лоб болит постоянно (даже ночью) и все сильнее. Завтра с утра поеду менять полис - по приезду меня обрадовали, что я уже работаю в другой организации, не в ООО "Сервис-Уфе", а в ООО "ГРИТ" (Геолого-Разведывательные Информационные Технологии) и мне надо менять полис. Вот такая жопа.
Немного продвинулся в написании лабы по ИГС, которую я решил переписать, чтобы потом включить в портфолио. Прога-то хорошая, красивая.
Всю неделю настроение было не ахти. На работе вроде загруз пока небольшой (как это ни удивительно), но все равно... как-то не ахти. Отпаиваю себя чаями, привезенными с Воскресенска (спасибо товарищу Мелнаксу за наше счастливое детство!) и смотрю спектакли Гришковца.
Наверное, все, что я хотел сказать... Разве что - хотел бы поблагодарить всех, кто был мне рад. И хотя фотоаппарат у меня разбит, я всех вас помню.
программерз онли07.11.2008 15:35:51 Fledgling у тя нормально фсе?
07.11.2008 15:53:15 Norritt ага если не считать обострения граблей прикинь сейчас позвал молодой товарищ
07.11.2008 15:53:40 Fledgling шо?
07.11.2008 15:53:49 Norritt говорит, чота не компилиццо в сях начал смотреть и нашёл потрясающую по своей глубине строчку #define int64 __int64 где-то в глубинах ашников
07.11.2008 15:55:14 Norritt а ругалось оно где-то в глубине wtypes.h на строчку LONGLONG int64;
07.11.2008 15:55:57 Fledgling ыхыхыы)) жыстока))
07.11.2008 15:58:45 Norritt LONGLONG-то понятное дело где-то в wtypes определён. Но wtypes совсем не в курсе, что есть извращенцы, которые переопределяют int64
07.11.2008 15:59:06 Fledgling )))))))))))))))))
07.11.2008 15:59:55 Norritt в результате сейчас молчел сидит и мрачно делает автозамену строк вида " (u)intXX " -> " (unsigned) __intXX "
07.11.2008 16:00:04 Fledgling
07.11.2008 16:00:20 Norritt потомушта мы нашли и int8, и int16 задефайненные таким образом
07.11.2008 16:00:39 Fledgling )) прогер был затейник)))
07.11.2008 16:01:23 Norritt а виновник торжества сидит и с наивным видом оправдывается - "ну я ж не знал", "ну это ж было для другого писано", "и ваще, чо вы от меня хотите", "я не знал что __intXX" - стандартная конструкция
07.11.2008 16:01:34 Fledgling ))) "кинул посона - па ибалу НА!"))))))))
07.11.2008 16:02:01 Norritt так что я совсем не удивлюсь, реально обнаружив #define TRUE FALSE где-нибудь в глубинах его кода
07.11.2008 16:02:20 Fledgling лопату на работу берите))
3го приехал в Мск. Протупили автобус, но всеж уехали в Ярославль. 4го протупили автобус в Ярославле, но всеж уехали в Мск. Опоздали на электричку, но, опять же, всеж уехали в Воскресенск. Что-то меня разметало... =О.о=
Вчера сел таки переписывать лабы по ИГС. Пока описывал структуры примитивов, родилась вот такая вот штукаштука:
// абстрактный класс, инкапсулирующий некоторый функционал, предполагаемый к изменению в зависимости от инициализации class AbstractFunctionality { void DoSomething() = 0; };
// шаблонный класс, в котором предполагается использование оного функционала template class Object : FunctionalClass { void Do() { DoSomething(); } };
А вот теперь получаем: Object Obj1; // будет использовать реализацию функционала из FuncClass1 Object Obj2; // будет использовать реализацию функционала из FuncClass2
Знаю, что боян и это описано у Александреску (я его еще не читал, меня просветили, что у него есть). Знаю, что это - старый добрый паттерн Strategy. Важно то, что идея использовать шаблон в этом паттерне пришла ко мне сама.
Я еще только учусь выражать словами то, что ощущаю... В нерусскоязычной стране я бы не выжил из-за невозможности выразить себя. Но даже русского языка мне мало... в нем есть слова и выражения лишь для чистых, конкретных ощущений. А что делать, если ощущаешь смесями? Как можно передать тру или иную пропорцию испытываемых чувств? Не знаю.