Attached a 1-line patch to fully qualify Eigen::internal::aligned_free in
Memory.h. I'm new to hg and I couldn't figure out from the instructions how
to push this directly (or whether I even have the permission to do so).

Anyway, this patch helps avoids a conflict on certain Windows toolchains
(potentially due to some ADL name resolution bug) in the case where
aligned_free is defined in the global namespace. In any case, tightening
this up is harmless.

Thanks,
Sam
# HG changeset patch
# User Sam Hasinoff <[email protected]>
# Date 1551485748 28800
#      Fri Mar 01 16:15:48 2019 -0800
# Node ID 5728a9b09b62a5ef83019995b3ee6f98243ea049
# Parent  1cbd54ce7b26bc92ccef84ceacf568d2be481d8a
Fully qualify Eigen::internal::aligned_free

This helps avoids a conflict on certain Windows toolchains
(potentially due to some ADL name resolution bug) in the case
where aligned_free is defined in the global namespace. In any
case, tightening this up is harmless.

diff --git a/Eigen/src/Core/util/Memory.h b/Eigen/src/Core/util/Memory.h
--- a/Eigen/src/Core/util/Memory.h
+++ b/Eigen/src/Core/util/Memory.h
@@ -373,17 +373,17 @@ template<typename T, bool Align> EIGEN_D
 }
 
 /** \internal Deletes objects constructed with aligned_new
   * The \a size parameters tells on how many objects to call the destructor of 
T.
   */
 template<typename T> EIGEN_DEVICE_FUNC inline void aligned_delete(T *ptr, 
std::size_t size)
 {
   destruct_elements_of_array<T>(ptr, size);
-  aligned_free(ptr);
+  Eigen::internal::aligned_free(ptr);
 }
 
 /** \internal Deletes objects constructed with conditional_aligned_new
   * The \a size parameters tells on how many objects to call the destructor of 
T.
   */
 template<typename T, bool Align> EIGEN_DEVICE_FUNC inline void 
conditional_aligned_delete(T *ptr, std::size_t size)
 {
   destruct_elements_of_array<T>(ptr, size);

Reply via email to