| type_of() evil implementation for VC7 | |
| От: | Chez | ||
| Дата: | 28.03.05 07:52 | ||
| Оценка: | 166 (14) ![]() | ||
|
| Дополнение: this_type | |
| От: | Chez | ||
| Дата: | 30.03.05 09:35 | ||
| Оценка: | 25 (2) | ||
| Есть ещё одна полезная вещь, которую я хотел бы видеть в C++: this_type. Что это есть я думаю всем понятно Но с type_of-ом просто определить его в контескте класса не получится:
|
| Re[5]: type_of() evil implementation for VC7 | |
| От: | Аноним 298 | ||
| Дата: | 29.03.05 14:07 | ||
| Оценка: | 1 (1) | ||
| Здравствуйте, Chez, Вы писали: А>>В таком случае у меня только одна проблема с вашей имплементацией -- это не C++ C> C> пусть, но тем не менее оно компилируется C>Если сделать type_of(), который будет переопределяться для каждого компилятора по-своему, то для VC7+ C>вполне можно будет использовать и это. http://lists.boost.org/MailArchives/boost/msg81690.php |
| Re: type_of() evil implementation for VC7 | |
| От: | Аноним 298 | ||
| Дата: | 28.03.05 14:03 |
Здравствуйте, Chez, Вы писали:
Если написать в VC71: type_of(std::make_pair(1, 3.14)) y = std::make_pair(1, 3.14); компилятор жалуется: ------ Build started: Project: type_of, Configuration: Debug Win32 ------ Compiling... main.cpp c:\ark\type_of\main.cpp(123) : error C2668: 'VarTypeID' : ambiguous call to overloaded function c:\ark\type_of\main.cpp(77): could be 'sized<NSize> VarTypeID<std::pair<_Ty1,_Ty2>>(const T &)' with [ NSize=7, _Ty1=int, _Ty2=double, T=std::pair<int,double> ] c:\ark\type_of\main.cpp(79): or 'sized<NSize> VarTypeID<std::pair<_Ty1,_Ty2>>(volatile T &)' with [ NSize=6, _Ty1=int, _Ty2=double, T=std::pair<int,double> ] while trying to match the argument list '(std::pair<_Ty1,_Ty2>)' with [ _Ty1=int, _Ty2=double ] c:\ark\type_of\main.cpp(123) : error C2955: 'CTypeRegRoot' : use of class template requires template argument list c:\ark\type_of\main.cpp(19) : see declaration of 'CTypeRegRoot' c:\ark\type_of\main.cpp(123) : error C2955: 'CTypeRegRoot' : use of class template requires template argument list c:\ark\type_of\main.cpp(19) : see declaration of 'CTypeRegRoot' Аркадий |
| Re[2]: type_of() evil implementation for VC7 | |
| От: | VNG | ||
| Дата: | 28.03.05 14:54 |
| Здравствуйте, <Аноним>, Вы писали: А>Здравствуйте, Chez, Вы писали: А>
А>Если написать в VC71: А>type_of(std::make_pair(1, 3.14)) y = std::make_pair(1, 3.14); А>компилятор жалуется: попробуй
... << RSDN@Home 1.1.4 beta 2 >> |
| Re[2]: type_of() evil implementation for VC7 | |
| От: | VNG | ||
| Дата: | 28.03.05 15:14 |
| Здравствуйте, <Аноним>, Вы писали: А>Здравствуйте, Chez, Вы писали: А>
А>Если написать в VC71: А>type_of(std::make_pair(1, 3.14)) y = std::make_pair(1, 3.14); А>компилятор жалуется: попробуй
... << RSDN@Home 1.1.4 beta 2 >> |
| Re[3]: type_of() evil implementation for VC7 | |
| От: | Аноним 298 | ||
| Дата: | 28.03.05 17:30 |
| Здравствуйте, VNG, Вы писали: VNG>Здравствуйте, <Аноним>, Вы писали: А>>Здравствуйте, Chez, Вы писали: А>>
А>>Если написать в VC71: А>>type_of(std::make_pair(1, 3.14)) y = std::make_pair(1, 3.14); А>>компилятор жалуется: VNG>попробуй VNG>
Не помогает. А что, какие-то проблемы с int? Нормальный typeof должен подерживать этот case. Аркадий |
| Re[2]: type_of() evil implementation for VC7 | |
| От: | Chez | ||
| Дата: | 29.03.05 06:25 |
| Да, этот момент я не знаю пока что, как реализовать лучше. Можно только упростить:
Тогда ваш пример будет работать нормально. Но! теперь не будут расспознаваться ни ссылки, ни модификаторы const и volatile. Хотя, возможно, это и не нужно...
|
| Re[3]: type_of() evil implementation for VC7 | |
| От: | Аноним 585 | ||
| Дата: | 29.03.05 09:50 |
| Здравствуйте, Chez, Вы писали: C>Да, этот момент я не знаю пока что, как реализовать лучше. C>Можно только упростить: C>Тогда ваш пример будет работать нормально. Но! теперь не будут расспознаваться ни ссылки, ни модификаторы const и volatile. Хотя, возможно, это и не нужно... Наверное нет. По крайней мере те компиляторы которые имеют встроенный typeof отбрасывают внешние референсы и сонстанты. В таком случае у меня только одна проблема с вашей имплементацией -- это не C++ Удачи. Аркадий |
| Re[4]: type_of() evil implementation for VC7 | |
| От: | Chez | ||
| Дата: | 29.03.05 11:04 |
| А>В таком случае у меня только одна проблема с вашей имплементацией -- это не C++ пусть, но тем не менее оно компилируется Если сделать type_of(), который будет переопределяться для каждого компилятора по-своему, то для VC7+ вполне можно будет использовать и это.
|
| Re[6]: type_of() evil implementation for VC7 | |
| От: | alnsn | ||
| Дата: | 29.03.05 18:45 |
| Здравствуйте, Аноним, Вы писали: А>http://lists.boost.org/MailArchives/boost/msg81690.php Опередил ты меня Мне ничего не остается, кроме как привести положительный ответ Дэйва: http://lists.boost.org/MailArchives/boost/msg81694.php |
| Re: type_of() evil implementation for VC7 | |
| От: | _Winnie | ||
| Дата: | 30.03.05 09:00 |
| Здравствуйте, Chez, Вы писали: Смотрел очень быстро. 1)Не скомпилировалось в VS2005beta 2)Не получилось сделать
Правильно работающая программа — просто частный случай Undefined Behavior ![]() |
| Re[2]: type_of() evil implementation for VC7 | |
| От: | Chez | ||
| Дата: | 30.03.05 09:35 |
| Здравствуйте, _Winnie, Вы писали: _W>1)Не скомпилировалось в VS2005beta _W>2)Не получилось сделать _W>
Вероятно, нужно внести изменения, как я уже написал здесь Автор: Chez .Дата: 29.03.05
|
| Re[5]: type_of() evil implementation for VC7 | |
| От: | Аноним 298 | ||
| Дата: | 30.03.05 13:46 |
| Здравствуйте, Chez, Вы писали: C>Если сделать type_of(), который будет переопределяться для каждого компилятора по-своему, то для VC7+ C>вполне можно будет использовать и это. Как насчет того чтобы включить ваш код в BOOST_TYPEOF? Ecли немножко подправить -- будет работать не только в VC7+, но и в VC7-. У нас есть еще месяца 2-3 до ревью. Аркадий |
| Re[6]: type_of() evil implementation for VC7 | |
| От: | Chez | ||
| Дата: | 30.03.05 14:01 |
| Здравствуйте, <Аноним>, Вы писали: А>Как насчет того чтобы включить ваш код в BOOST_TYPEOF? Ecли немножко подправить -- будет работать не только в VC7+, но и в VC7-. У нас есть еще месяца 2-3 до ревью. Да запросто, я буду только рад. Только вот как запустить его на VC7- я пока что не имею представления: нужно как-то организовать счётчик без __if_exists/__if_not_exists. Если сделать счётчик, то должно заработать и в более ранних версиях. Буду думать над счётчиком.
|
| Re[7]: type_of() evil implementation for VC7 | |
| От: | Аноним 298 | ||
| Дата: | 30.03.05 14:24 |
| Здравствуйте, Chez, Вы писали: C>Здравствуйте, <Аноним>, Вы писали: А>>Как насчет того чтобы включить ваш код в BOOST_TYPEOF? Ecли немножко подправить -- будет работать не только в VC7+, но и в VC7-. У нас есть еще месяца 2-3 до ревью. C>Да запросто, я буду только рад. C>Только вот как запустить его на VC7- я пока что не имею представления: C>нужно как-то организовать счётчик без __if_exists/__if_not_exists. C>Если сделать счётчик, то должно заработать и в более ранних версиях. C>Буду думать над счётчиком. Можно я по-английски а то у меня проблемы с руской клавиатурой? Скажите если нет... Actually Peder already did this -- he used the "compile-time variables" he already used for his own implementation -- the one that we are using now with vc65 and vc70, and which probably becomes obsolete once we start using yours. So, I will connect you two and you can negotiate the details. Is this OK? Regards, Arkadiy |
| Re[8]: type_of() evil implementation for VC7 | |
| От: | Chez | ||
| Дата: | 31.03.05 06:01 |
| Здравствуйте, <Аноним>, Вы писали: А>Actually Peder already did this -- he used the "compile-time variables" he already used for his own implementation -- the one that we are using now with vc65 and vc70, and which probably becomes obsolete once we start using yours. So, I will connect you two and you can negotiate the details. Is this OK? Ok, all right
|
| Re[8]: type_of() evil implementation for VC7 | |
| От: | alnsn | ||
| Дата: | 31.03.05 08:46 |
| Здравствуйте, Аноним, Вы писали: А>Можно я по-английски а то у меня проблемы с руской клавиатурой? Скажите если нет... А>Actually Peder already did this -- he used the "compile-time variables" he already used for his own implementation -- the one that we are using now with vc65 and vc70, and which probably becomes obsolete once we start using yours. So, I will connect you two and you can negotiate the details. Is this OK? Эх, вот если бы еще кросс-пост в буст с автоматическим переводом на английский, потому что "а мужики-то не знают" (для тех, кто долго не был в Росиии — это слоган из рекламы пива) |
| Re[9]: type_of() evil implementation for VC7 | |
| От: | Аноним 585 | ||
| Дата: | 31.03.05 10:10 |
| Здравствуйте, Chez, Вы писали: C>Здравствуйте, <Аноним>, Вы писали: А>>Actually Peder already did this -- he used the "compile-time variables" he already used for his own implementation -- the one that we are using now with vc65 and vc70, and which probably becomes obsolete once we start using yours. So, I will connect you two and you can negotiate the details. Is this OK? C>Ok, all right Почему-то не могу послать email на "chess@nightmail.ru" -- возвращается обратно. Ето правильный адрес? Аркадий |
| Re[10]: type_of() evil implementation for VC7 | |
| От: | Chez | ||
| Дата: | 31.03.05 10:24 |
| Здравствуйте, <Аноним>, Вы писали: А>Почему-то не могу послать email на "chess@nightmail.ru" -- возвращается обратно. Ето правильный адрес? не правильный, он раньше у меня был. умер под толщей спама а где вы его увидели? вот правильные: chezu@pisem.net chez@ezmail.ru
|
| Re[11]: type_of() evil implementation for VC7 | |
| От: | Аноним 585 | ||
| Дата: | 31.03.05 10:32 |
| Здравствуйте, Chez, Вы писали: C>Здравствуйте, <Аноним>, Вы писали: А>>Почему-то не могу послать email на "chess@nightmail.ru" -- возвращается обратно. Ето правильный адрес? C>не правильный, он раньше у меня был. умер под толщей спама C>а где вы его увидели? В вашем профайле. C>вот правильные: C>chezu@pisem.net C>chez@ezmail.ru Сейчас перепошлю... |
| Re[11]: type_of() evil implementation for VC7 | |
| От: | korzhik | ||
| Дата: | 31.03.05 10:37 |
| Здравствуйте, Chez, Вы писали: C>не правильный, он раньше у меня был. умер под толщей спама C>а где вы его увидели? C>вот правильные: C>chezu@pisem.net C>chez@ezmail.ru Теперь эти тожу умрут под толщей спама Не забываем что по сети бродят злобные роботы и парсят странички на наличие емайлов поэтому лучше писать как то так: chezu<---at--->pisem<---dot--->net |
| Re[12]: type_of() evil implementation for VC7 | |
| От: | Chez | ||
| Дата: | 31.03.05 10:41 |
| Здравствуйте, <Аноним>, Вы писали: А>В вашем профайле. Да, забыл про это. Поправил. C>>вот правильные: C>>chezu@pisem.net C>>chez@ezmail.ru А>Сейчас перепошлю... Пришло письмо.
|
| Re[12]: type_of() evil implementation for VC7 | |
| От: | Chez | ||
| Дата: | 31.03.05 10:44 |
| Здравствуйте, korzhik, Вы писали: K>Теперь эти тожу умрут под толщей спама K>Не забываем что по сети бродят злобные роботы и парсят странички на наличие емайлов поэтому лучше писать как то так: Да, протормозил я. Но по моему в форумах они не часто лазят, если вообще лазят... тяжковато это, перебирать все сообщения RSDN...
|
| Re[13]: type_of() evil implementation for VC7 | |
| От: | korzhik | ||
| Дата: | 31.03.05 10:46 |
| Здравствуйте, Chez, Вы писали: C>Здравствуйте, korzhik, Вы писали: K>>Теперь эти тожу умрут под толщей спама K>>Не забываем что по сети бродят злобные роботы и парсят странички на наличие емайлов поэтому лучше писать как то так: C>Да, протормозил я. C>Но по моему в форумах они не часто лазят, если вообще лазят... тяжковато это, перебирать все сообщения RSDN... да чёрт его знает, лучше перестраховаться. Я вот не давно пересел на gmail и уже получаю спам. блин где засветился чёрт его знает. |