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)) &&
7 etl::is_trivially_copyable<TSource>::value &&
8 etl::is_trivially_copyable<TDestination>::value, TDestination>::type
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)) &&
21 etl::is_trivially_copyable<TSource>::value &&
22 etl::is_trivially_copyable<TDestination>::value, TDestination>::type
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:1254