diff --git a/Modules/Adapters/GdalAdapters/include/otbOGRFieldWrapper.txx b/Modules/Adapters/GdalAdapters/include/otbOGRFieldWrapper.txx
index d3468a20ecf8961f74821b90f0e7f889763db891..1e74ea5aff20d446b6193a7915bb7d073d005ccd 100644
--- a/Modules/Adapters/GdalAdapters/include/otbOGRFieldWrapper.txx
+++ b/Modules/Adapters/GdalAdapters/include/otbOGRFieldWrapper.txx
@@ -114,7 +114,11 @@ typedef mpl::map
  */
 template
   < typename T
+#if GDAL_VERSION_NUM >= 2030000
+  , T ( OGRFeature::*ptr_to_function )(int) const
+#else
   , T ( OGRFeature::*ptr_to_function )(int)
+#endif
   , typename FinalReturnType = T
   > class MemberGetterPtr
     {
@@ -190,7 +194,11 @@ template
  */
 template
   < typename T
+#if GDAL_VERSION_NUM >= 2030000
+  , T const* ( OGRFeature::*ptr_to_function )(int, int*) const
+#else
   , T const* ( OGRFeature::*ptr_to_function )(int, int*)
+#endif
   , typename FinalReturnType = std::vector<T>
   > class MemberContainerGetterPtr
     {
@@ -292,7 +300,11 @@ template
  */
 template
   < typename T
+#if GDAL_VERSION_NUM >= 2030000
+  , void ( OGRFeature::*ptr_to_function )(int, int, const T*)
+#else
   , void ( OGRFeature::*ptr_to_function )(int, int, T*) // not const-correct
+#endif
   , typename ActualParamType = std::vector<T>
   > class MemberContainerSetterPtr
     {