impl_config.hpp 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  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/boost_config.hpp>
  12. /*-----------------------------------------------------------------------------+
  13. | You can choose an implementation for the basic set and map classes. |
  14. | Select at most ONE of the following defines to change the default |
  15. +-----------------------------------------------------------------------------*/
  16. //#define ICL_USE_STD_IMPLEMENTATION // Default
  17. //#define ICL_USE_BOOST_MOVE_IMPLEMENTATION // Boost.Container
  18. // ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION // No longer available
  19. /*-----------------------------------------------------------------------------+
  20. | NO define or ICL_USE_STD_IMPLEMENTATION: Choose std::set and std::map from |
  21. | your local std implementation as implementing containers (DEFAULT). |
  22. | Whether move semantics is available depends on the version of your local |
  23. | STL. |
  24. | |
  25. | ICL_USE_BOOST_MOVE_IMPLEMENTATION: |
  26. | Use move aware containers from boost::container. |
  27. | |
  28. | NOTE: ICL_USE_BOOST_INTERPROCESS_IMPLEMENTATION: This define has been |
  29. | available until boost version 1.48.0 and is no longer supported. |
  30. +-----------------------------------------------------------------------------*/
  31. #if defined(ICL_USE_BOOST_MOVE_IMPLEMENTATION)
  32. # define ICL_IMPL_SPACE boost::container
  33. #elif defined(ICL_USE_STD_IMPLEMENTATION)
  34. # define ICL_IMPL_SPACE std
  35. #else
  36. # define ICL_IMPL_SPACE std
  37. #endif
  38. /*-----------------------------------------------------------------------------+
  39. | MEMO 2012-12-30: Due to problems with new c++11 compilers and their |
  40. | implementation of rvalue references, ICL's move implementation will be |
  41. | disabled for some new compilers for version 1.53. |
  42. +-----------------------------------------------------------------------------*/
  43. #if defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
  44. # define BOOST_ICL_NO_CXX11_RVALUE_REFERENCES
  45. //#elif defined(__clang__)
  46. //# define BOOST_ICL_NO_CXX11_RVALUE_REFERENCES
  47. //#elif (defined(__GNUC__) && (__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))
  48. //# define BOOST_ICL_NO_CXX11_RVALUE_REFERENCES
  49. #endif
  50. #include <boost/move/move.hpp>
  51. #endif // BOOST_ICL_IMPL_CONFIG_HPP_JOFA_091225