![]() |
|
Модераторы: LSD |
![]()
|
|
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
нет static функция-шаблон класса, точнее ее объявление в качестве параметра выступает указатель на функцию-член класса С что конкретно не понятно? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
это -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
и что? тот же самый callback, только + объект
Это сообщение отредактировал(а) MAKCim - 29.1.2007, 18:46 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
ну в этом контексте
смысл понятен, а здесь нет как внутри этого метода можно узнать на что указывает этот указатель? -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
здесь смысл не в этом
sizeof() направлен на размер типа возвращаемого одной из функций what() значения если T - класс, то преобразование 0 в указатель на функцию-член этого класса приоритетнее преобразования к элипсису (...), при этом для sizeof() не важно, есть ли вообще в классе методы, ему важен сам факт выбора компилятором нужной функции, а значит типа возвращаемого значения, а значит размера, т. е в данном случае указатель на функцию-член используется как инвариант принадлежности типа Т к типу класса, потому как тип "указатель на функцию-член" свойственен только классам/структурам Компилятор "ленив", он не проверяет в данном случае, а законно ли вообще преобразование 0 -> int C::* если T - класс, то ему этого в данном случае хватает Это сообщение отредактировал(а) MAKCim - 29.1.2007, 20:48 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
ответь мне на один вопрос, где вся эта лабуда применяется? (именно в том виде как ты привел пример) PS потому как смысл шаблонов и всего по отдельности я понимаю , кое где использую (где надо или где удобнее), но вот такого чуда.... я просто не представляю где оно может понадобится! и второе хотелось бы полностью разобраться хотя бы в твоей фразе не то что в коде -------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Когда я говорил усложняет, то имел ввиду с академической точки зрения. А на счет встроенных типов тут у меня такое убеждение, что шаблоны лишние. Для встроенных все должно быть максимально оптимизировано. Универсальность <> скорость. Так было всегда. Универсальность это использование общих моментов т.е. компромис, который определяется правилом, чтобы лучше было всем вместе, но не одному в ущерб другого. Для встроенных типов нужно максимум скорости, потому никакие компромисы не допустимы. Встроенные должны иметь свой набор классов и методов. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MAKCim |
|
||||||||||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
ооо, это непростой вопрос может Daevaorn знает
ну в принципе, т. к я отвечал на пост Alexeis, это дело можно использовать для проверки ограничений, накладываемых на тип в шаблоне, т. е, например, если тип T - класс, то отнаследоваться от него, если нет - сделать что-то другое
ну смотри sizeof() используется для определения различных размеров (типов, переменных и пр.)
is_class<T> :: what<T>(0) - это как бы вызов функции, но в контексте sizeof() это не вызов функции, а определение размера типа возвращаемого ею значения, т. е либо sizeof(T1), либо sizeof(T2), смотря какую функцию выбере компилятор здесь
функций what() у нас в классе 2, соответственно компилятор может выбрать или what(...), или what(int C::*) в этом месте идет разрешение перегрузки на основании переданного значения, т. е нуля 0 может преобразоваться в принципе и в ..., и в int C::*, но это в принципе реально он может преобразоваться в int C::* только тогда, когда C (а значит T) - класс, потому как указатель на функцию-член - это фича только классов/структур, в ... 0 может преобразоваться всегда компилятор в курсе, что за тип такой С (класс или что-то еще) и исходя из этого выбирает функцию выбрав функцию, становится понятен тип возвращаемого ею значения, а значит размер, что и возвращает sizeof() Romikgy проще не могу Добавлено @ 21:19 Alexeis,
Вот тут ты не прав Как раз тут мы только выигрываем от шаблонов, потому как вся сложность ложится на компилятор, а не на процессор в итоге
вектор int-ов, long-ов, short-ов, ... -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||||||||||
|
|||||||||||||||
| Beltar |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 2 Всего: 7 |
А так и представляю. Вставить нужный код в текст поменяв названия типов на нужный. Вот и все. Типовая задача. Нах. У меня есть структура хранения данных (взял из реального проектика)
Хранить в TList я ее не хочу, т. к. надо каждый раз приводить типы. Делаю так:
Трачу на эту хреновину 5 минут. Допустим мне нужно еще какой-то контейнер. Я могу его сделать простым копи-пастом с заменой. Но можно это дело автоматизировать. И даже ввести стандартную заготовку наследника от TList, т. е. шаблон. Это вполне можно возложить на IDE. Это реальный пример, куда более реальный, чем все надуманные примеры, которые тут рисует MAKCim. Этого мне будет совершенно достаточно. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
||||||
|
|||||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
я только не вижу разницы тогда между тем, что ты предлагаешь и шаблонами С++ (кроме, конечно, реализации этого в IDE Это сообщение отредактировал(а) MAKCim - 29.1.2007, 21:47 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 5 Всего: 70 |
догадываюсь Ещё совсем недавно нам обещали, что в следующем стнадарте С++ будет эта вещь реализована. Да ещё и с более широкими возможностями( например с пре/пост условиями для функций и т.д.). Но почему-то пока от этого отказались поздравляю Это сообщение отредактировал(а) Daevaorn - 29.1.2007, 21:50 |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
да уж, реальнее некуда ваш класс + copy-paste = индусский метод программирования Это сообщение отредактировал(а) MAKCim - 29.1.2007, 21:51 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
MAKCim, может это и круто, но мне жалко свой моск
-------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
да ради бога, никто не принуждает это нужно либо понять, либо забыть как страшный сон -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
| Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: 3 Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. |
|||
|
||||
![]()
|
| Правила ведения Религиозных войн | |
|
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Религиозные войны | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |