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>
732template <
class t_TYPE>
739template <
class t_TYPE>
746template <
class t_TYPE>
751template <
class t_TYPE,
size_t t_LEN>
755template <
class t_TYPE,
size_t t_LEN>
760template <
class t_TYPE,
size_t t_LEN>
765template <
class t_TYPE,
size_t t_LEN>
770#if !defined(BSLMF_ISBITWISEMOVEABLE_NO_SUPPORT_FOR_ARRAY_OF_UNKNOWN_BOUND)
771template <
class t_TYPE>
775template <
class t_TYPE>
776struct IsBitwiseMoveable<const t_TYPE[]> : IsBitwiseMoveable<t_TYPE>::type {
779template <
class t_TYPE>
780struct IsBitwiseMoveable<volatile t_TYPE[]> : IsBitwiseMoveable<t_TYPE>::type {
783template <
class t_TYPE>
784struct IsBitwiseMoveable<const volatile t_TYPE[]>
785: IsBitwiseMoveable<t_TYPE>::type {
static const t_TYPE value
Definition bslmf_integralconstant.h:258
#define BSLS_IDENT(str)
Definition bsls_ident.h:195
#define BSLS_KEYWORD_INLINE_VARIABLE
Definition bsls_keyword.h:623
Definition bdlbb_blob.h:576
Definition bslmf_integralconstant.h:244
Definition bslmf_isfunction.h:232
Definition bslmf_isreference.h:137
Definition bslmf_istriviallycopyable.h:329
Definition bslmf_detectnestedtrait.h:464
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