Use the feature checking macros to detect thread_local support in clang.

This commit is contained in:
PM_Extra 2016-12-04 13:42:52 +08:00
parent 68cc3e6856
commit b1a55ca3a4

View File

@ -48,6 +48,10 @@
#endif #endif
#ifndef __has_feature // Clang - feature checking macros.
#define __has_feature(x) 0 // Compatibility with non-clang compilers.
#endif
namespace spdlog namespace spdlog
{ {
namespace details namespace details
@ -315,7 +319,7 @@ inline size_t _thread_id()
//Return current thread id as size_t (from thread local storage) //Return current thread id as size_t (from thread local storage)
inline size_t thread_id() inline size_t thread_id()
{ {
#if defined(_MSC_VER) && (_MSC_VER < 1900) || defined(__clang_major__) && (__clang_major__ < 8) #if defined(_MSC_VER) && (_MSC_VER < 1900) || defined(__clang__) && !__has_feature(cxx_thread_local)
return _thread_id(); return _thread_id();
#else #else
static thread_local const size_t tid = _thread_id(); static thread_local const size_t tid = _thread_id();