8#ifndef INCLUDED_BSLMF_ISBITWISEMOVEABLE
9#define INCLUDED_BSLMF_ISBITWISEMOVEABLE
602#include <bslscm_version.h>
617#ifdef BSLS_COMPILERFEATURES_SUPPORT_TRAITS_HEADER
618# include <type_traits>
621#ifndef BDE_DONT_ALLOW_TRANSITIVE_INCLUDES
625#if !defined(BSLS_PLATFORM_CMP_IBM)
628# define BSLMF_ISBITWISEMOVEABLE_NO_SUPPORT_FOR_ARRAY_OF_UNKNOWN_BOUND 1
635template <
class t_TYPE>
636struct IsBitwiseMoveable;
638#ifdef BSLS_COMPILERFEATURES_SUPPORT_VARIABLE_TEMPLATES
641template <
class t_TYPE>
643 IsBitwiseMoveable<t_TYPE>::value;
651template <
class t_TYPE,
667template <
class t_TYPE>
671 static const bool k_NestedBitwiseMoveableTrait =
676 || k_NestedBitwiseMoveableTrait
677 ||
sizeof(t_TYPE) == 1;
681#if defined(BSLS_COMPILERFEATURES_SUPPORT_STATIC_ASSERT) && \
682 defined(BSLMF_ISTRIVIALLYCOPYABLE_NATIVE_IMPLEMENTATION)
694 "This imp-detail instantiation should not be selected for "
697 "This imp-detail instantiation should not be selected for "
700 static const bool k_ValueWithoutOnebyteHeuristic =
702 std::is_empty<t_TYPE>::value
703 || k_NestedBitwiseMoveableTrait;
717template <
class t_TYPE>
733template <
class t_TYPE>
740template <
class t_TYPE>
747template <
class t_TYPE>
752template <
class t_TYPE,
size_t t_LEN>
756template <
class t_TYPE,
size_t t_LEN>
761template <
class t_TYPE,
size_t t_LEN>
766template <
class t_TYPE,
size_t t_LEN>
771#if !defined(BSLMF_ISBITWISEMOVEABLE_NO_SUPPORT_FOR_ARRAY_OF_UNKNOWN_BOUND)
772template <
class t_TYPE>
776template <
class t_TYPE>
777struct IsBitwiseMoveable<const t_TYPE[]> : IsBitwiseMoveable<t_TYPE>::type {
780template <
class t_TYPE>
781struct IsBitwiseMoveable<volatile t_TYPE[]> : IsBitwiseMoveable<t_TYPE>::type {
784template <
class t_TYPE>
785struct IsBitwiseMoveable<const volatile t_TYPE[]>
786: IsBitwiseMoveable<t_TYPE>::type {
static const t_TYPE value
Definition bslmf_integralconstant.h:267
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
#define BSLS_KEYWORD_INLINE_VARIABLE
Definition bsls_keyword.h:665
Definition bdlbb_blob.h:579
Definition bslmf_integralconstant.h:261
Definition bslmf_isfunction.h:232
Definition bslmf_isreference.h:137
Definition bslmf_istriviallycopyable.h:324
Definition bslmf_detectnestedtrait.h:467
Definition bslmf_isbitwisecopyable.h:298
bsl::integral_constant< bool, value > type
Definition bslmf_isbitwisemoveable.h:679
Definition bslmf_isbitwisemoveable.h:654
Definition bslmf_isbitwisemoveable.h:718