mirror of
https://github.com/fmtlib/fmt.git
synced 2024-12-26 00:21:13 +00:00
Fix global initialization issue (#807)
This commit is contained in:
parent
48dff9f3c5
commit
6eaa507473
@ -54,7 +54,7 @@
|
|||||||
# define FMT_MSC_VER 0
|
# define FMT_MSC_VER 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Check if relaxed c++14 constexpr is supported.
|
// Check if relaxed C++14 constexpr is supported.
|
||||||
// GCC doesn't allow throw in constexpr until version 6 (bug 67371).
|
// GCC doesn't allow throw in constexpr until version 6 (bug 67371).
|
||||||
#ifndef FMT_USE_CONSTEXPR
|
#ifndef FMT_USE_CONSTEXPR
|
||||||
# define FMT_USE_CONSTEXPR \
|
# define FMT_USE_CONSTEXPR \
|
||||||
@ -69,6 +69,16 @@
|
|||||||
# define FMT_CONSTEXPR_DECL
|
# define FMT_CONSTEXPR_DECL
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef FMT_USE_CONSTEXPR11
|
||||||
|
# define FMT_USE_CONSTEXPR11 \
|
||||||
|
(FMT_MSC_VER >= 1900 || FMT_GCC_VERSION >= 406 || FMT_USE_CONSTEXPR)
|
||||||
|
#endif
|
||||||
|
#if FMT_USE_CONSTEXPR11
|
||||||
|
# define FMT_CONSTEXPR11 constexpr
|
||||||
|
#else
|
||||||
|
# define FMT_CONSTEXPR11
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef FMT_OVERRIDE
|
#ifndef FMT_OVERRIDE
|
||||||
# if FMT_HAS_FEATURE(cxx_override) || \
|
# if FMT_HAS_FEATURE(cxx_override) || \
|
||||||
(FMT_GCC_VERSION >= 408 && FMT_HAS_GXX_CXX11) || FMT_MSC_VER >= 1900
|
(FMT_GCC_VERSION >= 408 && FMT_HAS_GXX_CXX11) || FMT_MSC_VER >= 1900
|
||||||
@ -957,10 +967,10 @@ struct get_type {
|
|||||||
};
|
};
|
||||||
|
|
||||||
template <typename Context>
|
template <typename Context>
|
||||||
FMT_CONSTEXPR unsigned long long get_types() { return 0; }
|
FMT_CONSTEXPR11 unsigned long long get_types() { return 0; }
|
||||||
|
|
||||||
template <typename Context, typename Arg, typename... Args>
|
template <typename Context, typename Arg, typename... Args>
|
||||||
FMT_CONSTEXPR unsigned long long get_types() {
|
FMT_CONSTEXPR11 unsigned long long get_types() {
|
||||||
return get_type<Context, Arg>::value | (get_types<Context, Args...>() << 4);
|
return get_type<Context, Arg>::value | (get_types<Context, Args...>() << 4);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1010,15 +1020,15 @@ class format_arg_store {
|
|||||||
|
|
||||||
friend class basic_format_args<Context>;
|
friend class basic_format_args<Context>;
|
||||||
|
|
||||||
static FMT_CONSTEXPR long long get_types() {
|
static FMT_CONSTEXPR11 long long get_types() {
|
||||||
return IS_PACKED ?
|
return IS_PACKED ?
|
||||||
static_cast<long long>(internal::get_types<Context, Args...>()) :
|
static_cast<long long>(internal::get_types<Context, Args...>()) :
|
||||||
-static_cast<long long>(NUM_ARGS);
|
-static_cast<long long>(NUM_ARGS);
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
#if FMT_USE_CONSTEXPR
|
#if FMT_USE_CONSTEXPR11
|
||||||
static constexpr long long TYPES = get_types();
|
static FMT_CONSTEXPR11 long long TYPES = get_types();
|
||||||
#else
|
#else
|
||||||
static const long long TYPES;
|
static const long long TYPES;
|
||||||
#endif
|
#endif
|
||||||
@ -1037,7 +1047,7 @@ class format_arg_store {
|
|||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#if !FMT_USE_CONSTEXPR
|
#if !FMT_USE_CONSTEXPR11
|
||||||
template <typename Context, typename ...Args>
|
template <typename Context, typename ...Args>
|
||||||
const long long format_arg_store<Context, Args...>::TYPES = get_types();
|
const long long format_arg_store<Context, Args...>::TYPES = get_types();
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user