Embedded Template Library 1.0
Loading...
Searching...
No Matches
bit_cast.h
1#pragma once
2
3#include "platform.h"
4
5template <typename TDestination, typename TSource>
6typename etl::enable_if<(sizeof(TDestination) == sizeof(TSource)) &&
9 bit_cast(const TSource& source) ETL_NOEXCEPT
10{
11 TDestination destination;
12
13 memcpy(&destination, &source, sizeof(TDestination));
14
15 return destination;
16}
17
18template <typename TDestination, typename TSource>
19ETL_CONSTEXPR
20typename etl::enable_if<(sizeof(TDestination) == sizeof(TSource)) &&
23 bit_cast(const TSource& source) ETL_NOEXCEPT
24{
25 TDestination destination;
26
27 __builtin_memcpy(&destination, &source, sizeof(TDestination));
28
29 return destination;
30}
31
32
33
enable_if
Definition type_traits_generator.h:1191
ETL_NODISCARD etl::enable_if<!(etl::is_integral< TDestination >::value &&etl::is_integral< TSource >::value)&&(sizeof(TDestination)==sizeof(TSource))&&etl::is_trivially_copyable< TSource >::value &&etl::is_trivially_copyable< TDestination >::value, TDestination >::type bit_cast(const TSource &source) ETL_NOEXCEPT
bit_cast - Type to different type.
Definition bit.h:58
Definition type_traits_generator.h:2115