1#ifndef RBIMPL_ATTR_CONSTEXPR_H
2#define RBIMPL_ATTR_CONSTEXPR_H
28#if ! defined(__cplusplus)
30# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 0
31# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 0
33#elif defined(__cpp_constexpr)
35# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 (__cpp_constexpr >= 200704L)
36# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 (__cpp_constexpr >= 201304L)
38#elif RBIMPL_COMPILER_SINCE(MSVC, 19, 0, 0)
39# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 RBIMPL_COMPILER_SINCE(MSVC, 19, 00, 00)
40# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 RBIMPL_COMPILER_SINCE(MSVC, 19, 11, 00)
42#elif RBIMPL_COMPILER_SINCE(SunPro, 5, 13, 0)
43# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 (__cplusplus >= 201103L)
44# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 (__cplusplus >= 201402L)
46#elif RBIMPL_COMPILER_SINCE(GCC, 4, 9, 0)
47# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 (__cplusplus >= 201103L)
48# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 (__cplusplus >= 201402L)
50#elif RBIMPL_HAS_FEATURE(cxx_relaxed_constexpr)
51# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 1
52# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 1
54#elif RBIMPL_HAS_FEATURE(cxx_constexpr)
55# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 1
56# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 0
60# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX11 0
61# define RBIMPL_HAS_ATTR_CONSTEXPR_CXX14 0
66#if RBIMPL_HAS_ATTR_CONSTEXPR_CXX14
67# define RBIMPL_ATTR_CONSTEXPR(_) constexpr
69#elif RBIMPL_HAS_ATTR_CONSTEXPR_CXX11
70# define RBIMPL_ATTR_CONSTEXPR(_) RBIMPL_TOKEN_PASTE(RBIMPL_ATTR_CONSTEXPR_, _)
71# define RBIMPL_ATTR_CONSTEXPR_CXX11 constexpr
72# define RBIMPL_ATTR_CONSTEXPR_CXX14
75# define RBIMPL_ATTR_CONSTEXPR(_)
80# define RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(_) RBIMPL_ATTR_CONSTEXPR(_)
82# define RBIMPL_ATTR_CONSTEXPR_UNLESS_DEBUG(_)
Defines RBIMPL_COMPILER_IS.
Defines RBIMPL_HAS_FEATURE.
Defines RBIMPL_TOKEN_PASTE.