Skip to content
Thomas Kemmer edited this page Nov 21, 2017 · 1 revision

BALL internally uses preprocessor macros to distinguish whether a particular header file or language feature is available on a supported target platform. These macros are not intended for use outside of BALL and subject to change without deprecation across BALL releases.

Feature Guards

BALL_HAS_MODE_T

  • Prerequisite: mode_t type is available in <sys/stat.h>
  • Unsupported platforms: MSVC (all versions; current: 2017)

BALL_HAS_NOEXCEPT

  • Prerequisite: noexcept keyword is available
  • Unsupported platforms: MSVC 2013

BALL_HAS_STD_STRING_CONST_ITERATOR_FUNCTIONS

  • Prerequisite: some std::string functions allow const_iterator arguments instead of iterator
  • Unsupported platforms: GCC 4.8 (CentOS 7, Ubuntu 14.04 LTS)

BALL_HAS_STD_STRING_CONST_ITERATOR_INITLIST_INSERT

  • Prerequisite: std::string offers insert(const_iterator, initializer_list<char>) function
  • Unsupported platforms: GCC (all versions; current: 7.2)

BALL_HAS_THREAD_LOCAL

  • Prerequisite: Thread-local storage support via thread_local keyword
  • Unsupported platforms: MSVC 2013
Clone this wiki locally