OnixS ICE iMpact Multicast Price Feed Handler C++ library 8.20.0
Users' manual and API documentation
Loading...
Searching...
No Matches
Compiler.h
Go to the documentation of this file.
1/*
2 * Copyright (c) Onix Solutions Limited. All rights reserved.
3 *
4 * This software owned by Onix Solutions Limited and is protected by copyright law
5 * and international copyright treaties.
6 *
7 * Access to and use of the software is governed by the terms of the applicable ONIXS Software
8 * Services Agreement (the Agreement) and Customer end user license agreements granting
9 * a non-assignable, non-transferable and non-exclusive license to use the software
10 * for it's own data processing purposes under the terms defined in the Agreement.
11 *
12 * Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
13 * of this source code or associated reference material to any other location for further reproduction
14 * or redistribution, and any amendments to this copyright notice, are expressly prohibited.
15 *
16 * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
17 * the terms of the Agreement is a violation of copyright law.
18 */
19
20#pragma once
21
22#include <new>
23
24// ONIXS_ICEMDH_LAUNDER(ptr)
25//
26// Returns a pointer to the object located at the address of `ptr`.
27//
28// Expands to `std::launder` from C++17 on, to `__builtin_launder` where the
29// compiler provides it, and to `ptr` otherwise.
30
31#if defined(__cpp_lib_launder) && __cpp_lib_launder >= 201606L
32# define ONIXS_ICEMDH_LAUNDER(ptr) std::launder(ptr)
33#elif defined(__has_builtin)
34# if __has_builtin(__builtin_launder)
35# define ONIXS_ICEMDH_LAUNDER(ptr) __builtin_launder(ptr)
36# endif
37#elif defined(__GNUC__) && !defined(__clang__) && __GNUC__ >= 7
38// GCC provides the builtin since 7, and `__has_builtin` since 10.
39# define ONIXS_ICEMDH_LAUNDER(ptr) __builtin_launder(ptr)
40#endif
41
42#ifndef ONIXS_ICEMDH_LAUNDER
43# define ONIXS_ICEMDH_LAUNDER(ptr) (ptr)
44#endif