Bonjour à tous,
je suis en train de créer un système d'allocation mémoire en définissant mes propres allocators. Sans rentrer dans les détails je créer plusieurs MACRO pour réaliser des allocations et celle qui me fait me poser des questions est ceci :
La macro CL_IS_POD est en fait std::is_pod<T>::value présent dans <type_traits> sous Visual Studio 2010. En fonction de la valeur retourné j'utilise tel ou tel fonction d'allocation.
cl::CArray est un trick template:
La question est plus "Qu'est ce qu'un POD?" j'ai déjà une réponse mais je m'interroge sur mes connaissances des POD car lorsque je fais ceci :
std::is_pod<pod>::value me donne true.
Et avec ceci:
Or il n'y a ni constructeur, ni destructeur, ni fonction virtuel membre...
Est-ce normal?
J'ai le même résultat avec std::is_pod et std::tr1::is_pod.
Merci
je suis en train de créer un système d'allocation mémoire en définissant mes propres allocators. Sans rentrer dans les détails je créer plusieurs MACRO pour réaliser des allocations et celle qui me fait me poser des questions est ceci :
Code:
1
2
3
#define CL_IS_POD(type) cl::IntToType<cl::IsPOD<type>::m_value>()
#define CL_NEW_ARRAY(type,allocator) cl::NewArray<cl::CArray<type>::m_type>(allocator,cl::CArray<type>::m_count,CL_IS_POD(cl::CArray<type>::m_type))
cl::CArray est un trick template:
Code:
1
2
3
4
5
6
7
8
template<class T>
struct CArray{};
template<class T, size_t N>
struct CArray<T[N]>
{
typedef T m_type;
static const size_t m_count = N;
};
Code:
1
2
3
4
struct pod
{
float* p;
};
Et avec ceci:
Code:
1
2
3
4
class pod
{
float* p;
};
Est-ce normal?
J'ai le même résultat avec std::is_pod et std::tr1::is_pod.
Merci
Aucun commentaire:
Enregistrer un commentaire