How to use boost::geometry in UE5?

The C++ library Boost is natively located in : C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost

Adding “Boost” to the build.cs public dependencies and rebuilding doesn’t throw exceptions, but I get a lot of these after adding the header include <boost/geometry.hpp> in any C++ file or any other header referencing that library.

  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(18): error C2988: unrecognizable template declaration/definition
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(18): note: the template instantiation context (the oldest one first) is
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(22): note: see reference to class template instantiation 'boost::multiprecision::detail::has_signed_types<T>' being compiled
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(18): error C2059: syntax error: '<end Parse>'
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(18): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(19): error C2062: type 'char' unexpected
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(19): error C2334: unexpected token(s) preceding '{'; skipping apparent function body
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(21): error C2760: syntax error: '{' was unexpected here; expected 'expression'
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(21): error C2988: unrecognizable template declaration/definition
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(21): error C2059: syntax error: '{'
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(21): error C2988: unrecognizable template declaration/definition
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(21): error C2059: syntax error: '=='
  C:\Program Files\Epic Games\UE_5.4\Engine\Source\ThirdParty\Boost\boost-1_82_0\include\boost\multiprecision\traits\is_backend.hpp(21): error C2238: unexpected token(s) preceding ';'

...

How to properly integrate Boost libraries into UE5?

I found the solution. Here it goes. :slight_smile:

“BOOST_GEOMETRY_NO_ROBUSTNESS” is optional and used to make boost::geometry use float32 - 64 values and not higher-precision floats.

#define BOOST_GEOMETRY_NO_ROBUSTNESS

THIRD_PARTY_INCLUDES_START
#pragma push_macro(“CONSTEXPR”)
#undef CONSTEXPR
#pragma push_macro(“dynamic_cast”)
#undef dynamic_cast
#pragma push_macro(“check”)
#undef check
#pragma push_macro(“PI”)
#undef PI

include <boost/geometry.hpp>
include <boost/geometry/geometries/point.hpp>
include <boost/geometry/geometries/box.hpp>
include <boost/geometry/index/rtree.hpp>

#pragma pop_macro(“PI”)
#pragma pop_macro(“check”)
#pragma pop_macro(“dynamic_cast”)
#pragma pop_macro(“CONSTEXPR”)
THIRD_PARTY_INCLUDES_END