impl_config.hpp 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. /*-----------------------------------------------------------------------------+
  2. Author: Joachim Faulhaber
  3. Copyright (c) 2009-2011: Joachim Faulhaber
  4. +------------------------------------------------------------------------------+
  5. Distributed under the Boost Software License, Version 1.0.
  6. (See accompanying file LICENCE.txt or copy at
  7. http://www.boost.org/LICENSE_1_0.txt)
  8. +-----------------------------------------------------------------------------*/
  9. #ifndef BOOST_ICL_IMPL_CONFIG_HPP_JOFA_091225
  10. #define BOOST_ICL_IMPL_CONFIG_HPP_JOFA_091225
  11. #include <boost/icl/detail/requires_cxx11.hpp>
  12. #include <boost/icl/detail/boost_config.hpp>
  13. /*-----------------------------------------------------------------------------+
  14. | You can choose an implementation for the basic set and map classes. |
  15. | Select at most ONE of the following defines to change the default |
  16. +-----------------------------------------------------------------------------*/
  17. //#define ICL_USE_STD_IMPLEMENTATION // Default
  18. //#define ICL_USE_BOOST_MOVE_IMPLEMENTATION // Boost.Container
  19. // ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION // No longer available
  20. /*-----------------------------------------------------------------------------+
  21. | NO define or ICL_USE_STD_IMPLEMENTATION: Choose std::set and std::map from |
  22. | your local std implementation as implementing containers (DEFAULT). |
  23. | Whether move semantics is available depends on the version of your local |
  24. | STL. |
  25. | |
  26. | ICL_USE_BOOST_MOVE_IMPLEMENTATION: |
  27. | Use move aware containers from boost::container. |
  28. | |
  29. | NOTE: ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION: This define has been |
  30. | available until boost version 1.48.0 and is no longer supported. |
  31. +-----------------------------------------------------------------------------*/
  32. #if defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION)
  33. # define ICL_IMPL_SPACE boost::container
  34. #elif defined(ICL_USE_STD_IMPLEMENTATION)
  35. # define ICL_IMPL_SPACE std
  36. #else
  37. # define ICL_IMPL_SPACE std
  38. #endif
  39. /*-----------------------------------------------------------------------------+
  40. | MEMO 2012-12-30: Due to problems with new c++11 compilers and their |
  41. | implementation of rvalue references, ICL's move implementation will be |
  42. | disabled for some new compilers for version 1.53. |
  43. +-----------------------------------------------------------------------------*/
  44. #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  45. # define BOOST_ICL_NO_CXX11_RVALUE_REFERENCES
  46. //#elif defined(__clang__)
  47. //# define BOOST_ICL_NO_CXX11_RVALUE_REFERENCES
  48. //#elif (defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))
  49. //# define BOOST_ICL_NO_CXX11_RVALUE_REFERENCES
  50. #endif
  51. #include <boost/move/move.hpp>
  52. #endif // BOOST_ICL_IMPL_CONFIG_HPP_JOFA_091225