POD тип, не POD тип ?
От: SergeyBi  
Дата: 06.09.04 08:18
Оценка:
Поиск не дал ответа.
Могу ли я как-то на этапе компиляции или выполнения определить является ли тип — POD типом.
Может есть что-то готовое?
Re: POD тип, не POD тип ?
От: Аноним  
Дата: 06.09.04 08:23
Оценка: +1
нууу, если ты пишешь свой компилятор, то конечно можешь. А так — никак.
Re: POD тип, не POD тип ?
От: korzhik Россия  
Дата: 06.09.04 08:24
Оценка: 8 (2)
Здравствуйте, SergeyBi, Вы писали:

SB>Поиск не дал ответа.

SB>Могу ли я как-то на этапе компиляции или выполнения определить является ли тип — POD типом.
SB>Может есть что-то готовое?


boost::is_pod<T>
Re[2]: POD тип, не POD тип ?
От: SergeyBi  
Дата: 06.09.04 08:26
Оценка:
А>нууу, если ты пишешь свой компилятор, то конечно можешь. А так — никак.

Хорошо, а если я ослаблю требование.

Можно ли отличить тип у которого есть указатель на таблицу вирт. функций от того у которого его нет(нет ни одной вирт функции не у него ни у любого предка).
Re: POD тип, не POD тип ?
От: _nn_ www.nemerleweb.com
Дата: 06.09.04 08:27
Оценка: 3 (1)
Здравствуйте, SergeyBi, Вы писали:

SB>Поиск не дал ответа.

SB>Могу ли я как-то на этапе компиляции или выполнения определить является ли тип — POD типом.
SB>Может есть что-то готовое?

#include <boost/type_traits/is_pod.hpp>
//использование
boost;:is_pod<T>::value;


boost достать можно здесь.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: POD тип, не POD тип ?
От: Bell Россия  
Дата: 06.09.04 08:31
Оценка:
Здравствуйте, SergeyBi, Вы писали:

SB>Поиск не дал ответа.

SB>Могу ли я как-то на этапе компиляции или выполнения определить является ли тип — POD типом.
Способа на все случаи жизни увы нет.

SB>Может есть что-то готовое?

Посмотри в сторону boost::type_traits.
Любите книгу — источник знаний (с) М.Горький
Re[3]: POD тип, не POD тип ?
От: Bell Россия  
Дата: 06.09.04 08:32
Оценка:
Здравствуйте, SergeyBi, Вы писали:

А>>нууу, если ты пишешь свой компилятор, то конечно можешь. А так — никак.


SB>Хорошо, а если я ослаблю требование.


SB>Можно ли отличить тип у которого есть указатель на таблицу вирт. функций от того у которого его нет(нет ни одной вирт функции не у него ни у любого предка).



boost::is_polymorphic<T>
Любите книгу — источник знаний (с) М.Горький
Re[3]: POD тип, не POD тип ?
От: Аноним  
Дата: 06.09.04 09:09
Оценка:
SB>Можно ли отличить тип у которого есть указатель на таблицу вирт. функций от того у которого его нет(нет ни одной вирт функции не у него ни у любого предка).

Тут тебе буст насоветовали. Но, как я понимаю, по-настоящему 100% переносимого правильного решения нет — нужна поддержка со стороны компилятора.
Re: POD тип, не POD тип ?
От: Mr. None Россия http://mrnone.blogspot.com
Дата: 06.09.04 09:59
Оценка:
Здравствуйте, SergeyBi, Вы писали:

SB>Поиск не дал ответа.

SB>Могу ли я как-то на этапе компиляции или выполнения определить является ли тип — POD типом.
SB>Может есть что-то готовое?

Вроде у Александреску ("Современное проектирование на С++") было что-то подобное, но к сожаледнию у меня этой книги под рукой нет .
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Re[2]: POD тип, не POD тип ?
От: sergey_shandar США http://getboost.codeplex.com/
Дата: 06.09.04 13:43
Оценка: 5 (1)
Здравствуйте, korzhik, Вы писали:

K>Здравствуйте, SergeyBi, Вы писали:


SB>>Поиск не дал ответа.

SB>>Могу ли я как-то на этапе компиляции или выполнения определить является ли тип — POD типом.
SB>>Может есть что-то готовое?


K>boost::is_pod&lt;T&gt;


Все правильно. Только что бы ни у кого не было иллюзий что можно определить POD, нужно ссылку на boost::is_pod приводить с той заметкой которая там дана:

Without some (as yet unspecified) help from the compiler, is_pod will never report that a class or struct is a POD; this is always safe, if possibly sub-optimal.

If the compiler does not support partial-specialization of class templates, then this template can not be used with function types.


Да и в стандартах в разных версиях определяеться по разному POD: http://www.rsdn.ru/Forum/?mid=614833
Автор: Павел Кузнецов
Дата: 22.04.04
. Так что с практической точки зрения не имеет значения как стандарт определяет POD до тех пор пока на уровне компиляции нельзя его определить.
getboost.codeplex.com
citylizard.codeplex.com
Re[3]: POD тип, не POD тип ?
От: MaximE Великобритания  
Дата: 08.09.04 07:40
Оценка:
sergey_shandar wrote:

[]

> K>boost::is_pod&lt;T&gt;

>
> Все правильно. Только что бы ни у кого не было иллюзий что можно определить POD, нужно ссылку на boost::is_pod приводить с той заметкой которая там дана:

[offtopic]Кого интересуют иллюзии тех, кому лень читать документацию?![/offtopic]

--
Maxim Yegorushkin
Posted via RSDN NNTP Server 1.9 gamma
Re[4]: POD тип, не POD тип ?
От: sergey_shandar США http://getboost.codeplex.com/
Дата: 08.09.04 07:56
Оценка: :)
Здравствуйте, MaximE, Вы писали:

ME>[offtopic]Кого интересуют иллюзии тех, кому лень читать документацию?![/offtopic]


[offtopic]Наверно не того кто придумывает is_pod который определяет нечто совсем другое, и не того кто вводит определение POD, которое имеет малое значения с практической точки зрения.[/offtopic]
getboost.codeplex.com
citylizard.codeplex.com
Re[4]: POD тип, не POD тип ?
От: Шахтер Интернет  
Дата: 08.09.04 18:09
Оценка: +1
Здравствуйте, MaximE, Вы писали:

ME>sergey_shandar wrote:


ME>[]


>> K>boost::is_pod&lt;T&gt;

>>
>> Все правильно. Только что бы ни у кого не было иллюзий что можно определить POD, нужно ссылку на boost::is_pod приводить с той заметкой которая там дана:

ME>[offtopic]Кого интересуют иллюзии тех, кому лень читать документацию?![/offtopic]


ME>--

ME>Maxim Yegorushkin

Название is_pod вводит в заблуждение. Лучше так не поступать. Интерфейс должен быть интуитивно-понятным. Если для работы с системой нужно прочитать тома документации на неё, значит эта система плохо спроектирована.
... << RSDN@Home 1.1.0 stable >>
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[3]: POD тип, не POD тип ?
От: Programador  
Дата: 29.08.09 17:11
Оценка:
Здравствуйте, SergeyBi, Вы писали:

SB>Можно ли отличить тип у которого есть указатель на таблицу вирт. функций от того у которого его нет(нет ни одной вирт функции не у него ни у любого предка).

Если ассер нужен можно инициализацией проверить.
if(0)
{ T t={};
}

Можно добавить чет виртуальное и sizeof сравнить
struct TestPod
{  template <typename T> 
   struct Virtual: public T
    { virtual Virtual()=0;
    };
    teplate <typename T  > static char (& Tst ()) [int(sizeof(Virtual<T>)==sizeof(T))+1];  
};


У МС есть много встроенного http://msdn.microsoft.com/en-us/library/ms177194(VS.80).aspx
Re: POD тип, не POD тип ?
От: Alexander_S_U https://github.com/alexanders-code/cmdxmlinstaller
Дата: 29.08.09 17:32
Оценка:
Здравствуйте, SergeyBi, Вы писали:

SB>Поиск не дал ответа.

SB>Могу ли я как-то на этапе компиляции или выполнения определить является ли тип — POD типом.
SB>Может есть что-то готовое?
Посмотрите
Дэвид Вандевурд и Николай М. Джосаттис "Шабоны С++ справочник разработчика"
глава 19 описана разработка шаблона который позволяет определять различные свойства передаваемого ему типа в том числе является ли данный тип POD типом.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
https://github.com/alexanders-code/cmdxmlinstaller
Re: POD тип, не POD тип ?
От: Erop Россия  
Дата: 29.08.09 20:42
Оценка: :)
Здравствуйте, SergeyBi, Вы писали:

SB>Могу ли я как-то на этапе компиляции или выполнения определить является ли тип — POD типом.

SB>Может есть что-то готовое?

Точный ответ "никак", но может быть ты скажешь зачем тебе такая возможность понадобилась и кто-нибудь сможет предложить обходной путь?
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Re[2]: POD тип, не POD тип ?
От: SergeyBi  
Дата: 29.08.09 20:46
Оценка:
E>Точный ответ "никак", но может быть ты скажешь зачем тебе такая возможность понадобилась и кто-нибудь сможет предложить обходной путь?

Это было много лет назад. Я точно цели не помню. Кажктся я в академичесуих целях писал аналог sdt::vector и мне нужно было решить могу ли я ради оптимизации использовать memcpy или придется приминять почленное копирование. Что-то в этом роде...
Re[3]: POD тип, не POD тип ?
От: Programador  
Дата: 29.08.09 21:07
Оценка: +1
Здравствуйте, SergeyBi, Вы писали:

SB>Это было много лет назад. Я точно цели не помню. Кажктся я в академичесуих целях писал аналог sdt::vector и мне нужно было решить могу ли я ради оптимизации использовать memcpy или придется приминять почленное копирование. Что-то в этом роде...


наличие таблицы виртуальных функций никак не помешает использовать memcpy Например sdt::vector, при простейших реализациях, ИМХО можно откопировать memcpy только тогда оригинал нужно забыть без деструктора
Re[3]: POD тип, не POD тип ?
От: Erop Россия  
Дата: 29.08.09 21:42
Оценка:
Здравствуйте, SergeyBi, Вы писали:

SB>Это было много лет назад. Я точно цели не помню. Кажктся я в академичесуих целях писал аналог sdt::vector и мне нужно было решить могу ли я ради оптимизации использовать memcpy или придется приминять почленное копирование. Что-то в этом роде...


упс, не заметил, что пост древний!

IMHO, тогда бы было хорошим решением позволить пользователю что-то специализировать или определять для своего типа, что включает оптимизацию, если она так уж нужна...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.