tag:blogger.com,1999:blog-7754674872362895099.post4350814033302763154..comments2023-05-03T16:18:51.793+03:00Comments on Очень серьезный блог: Boost.PreprocessorAnonymoushttp://www.blogger.com/profile/10666299351005530153noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-7754674872362895099.post-23227592744122828392011-04-19T13:26:04.917+04:002011-04-19T13:26:04.917+04:00Вместо uber switch можно использовать один прием, ...Вместо uber switch можно использовать один прием, я его тут уже описывал: <br>http://evgeny-lazin.blogspot.com/2008/01/switch.html<br>его суть в том, что вместо того, что-бы просто хранить информацию о типах в compile-time, список типов может состоять из объектов, которые могут себя как нибудь вести. Если такой объект умеет хранить значение типа Head, то у нас получится tuple. Ну а если он умеет проверять некоторое условие и возвращать значение, либо рекурсивно продолжать проверку используя следующий в списке тип, то так уже можно эмулировать switch)Lazinhttp://www.blogger.com/profile/10666299351005530153noreply@blogger.comtag:blogger.com,1999:blog-7754674872362895099.post-33211628331850385512009-05-11T15:04:00.000+04:002009-05-11T15:04:00.000+04:00Этот комментарий был удален автором.kore3dhttps://www.blogger.com/profile/10017916372290642662noreply@blogger.comtag:blogger.com,1999:blog-7754674872362895099.post-53779164805797393462009-05-10T22:59:00.000+04:002009-05-10T22:59:00.000+04:00Вместо uber switch можно использовать один прием, ...Вместо uber switch можно использовать один прием, я его тут уже описывал: <br />http://evgeny-lazin.blogspot.com/2008/01/switch.html<br />его суть в том, что вместо того, что-бы просто хранить информацию о типах в compile-time, список типов может состоять из объектов, которые могут себя как нибудь вести. Если такой объект умеет хранить значение типа Head, то у нас получится tuple. Ну а если он умеет проверять некоторое условие и возвращать значение, либо рекурсивно продолжать проверку используя следующий в списке тип, то так уже можно эмулировать switch)Anonymoushttps://www.blogger.com/profile/10666299351005530153noreply@blogger.comtag:blogger.com,1999:blog-7754674872362895099.post-44630392678614749782009-05-09T15:13:00.000+04:002009-05-09T15:13:00.000+04:00Списки типов это круто, но вот не понятно как сдел...Списки типов это круто, но вот не понятно как сделать следуюшую вещь. Есть фабричный метод Create(вроде так называется это), который по int classuid создает объект. Так вот хочется иметь список типов, а не писать убер свич внутри. Вот только как это сделать. Перебор типов в рантайме-то не живет. Есть какие-нибудь идеи?<br />Еще меня интересовало как сделать по стандарту аналог мелкомягкого __COUNTER__. Хочется аналог enum автоматом проставлять. Ну знаете, бывают пустые структуры вместо enum, вот их бы означивать уникальными ID.<br />А зачем вообще это? Ну вот у меня сейчас живет фабрика, которая по ID создает конкретный объект, а регистрация доступных в SDK объектов производится путем использования структур и частичной специализации, что дает при незарегистрированном (не связанным на этапе компиляции) ID тип void. Соответственно в этих же структурах, кроме ID могут лежать какие-то еще описатели - так для удобства. И получается что-то вроде new OBJECT{id}::TYPE. Удобно так держать в одном месте таблицу типов и жить с ней.kore3dhttps://www.blogger.com/profile/10017916372290642662noreply@blogger.com