From: Gabriel Corona Date: Mon, 7 Dec 2015 12:31:47 +0000 (+0100) Subject: [xbt] Remove C++ std::is_trivial verification for xtd_new X-Git-Tag: v3_13~1480^2~8 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/5bcc428156b0316a6e12b6a6b32d88f2e5e0944b [xbt] Remove C++ std::is_trivial verification for xtd_new It doesn't work for some versions of compiler. Moreover, it does not work very well with volatile fields which make the struct non-trivial in C++. --- diff --git a/include/xbt/sysdep.h b/include/xbt/sysdep.h index 4e407abb99..0d09d8a338 100644 --- a/include/xbt/sysdep.h +++ b/include/xbt/sysdep.h @@ -11,10 +11,6 @@ #ifndef _XBT_SYSDEP_H #define _XBT_SYSDEP_H -#ifdef __cplusplus -#include -#endif - #include "xbt/log.h" #include "xbt/misc.h" #include "xbt/asserts.h" @@ -148,42 +144,11 @@ XBT_PUBLIC(void) xbt_free_ref(void *d); SG_END_DECL() -/** @brief like calloc, but xbt_die() on error and don't memset to 0 - @hideinitializer */ -#ifndef __cplusplus - #define xbt_new(type, count) ((type*)xbt_malloc (sizeof (type) * (count))) /** @brief like calloc, but xbt_die() on error @hideinitializer */ #define xbt_new0(type, count) ((type*)xbt_malloc0 (sizeof (type) * (count))) -#else - -/** C++ wrapper for xtb_new - * - * This ensures that we do not xbt_new things that need a constructor. - */ -template inline -T* xbt_new_(size_t count) -{ - static_assert(std::is_trivial(), - "Cannot xbt_new this type"); - return (T*) xbt_malloc(sizeof(T) * count); -} - -template inline -T* xbt_new0_(size_t count) -{ - static_assert(std::is_trivial(), - "Cannot xbt_new0 this type"); - return (T*) xbt_malloc0(sizeof(T) * count); -} - -#define xbt_new(type, count) ::xbt_new_(count) -#define xbt_new0(type, count) ::xbt_new0_(count) - -#endif - /** @} */ #endif /* _XBT_SYSDEP_H */