diff --git a/src/libslic3r/Utils.hpp b/src/libslic3r/Utils.hpp
index 3e4437fcc..98c15db3c 100644
--- a/src/libslic3r/Utils.hpp
+++ b/src/libslic3r/Utils.hpp
@@ -110,7 +110,10 @@ inline uint64_t next_highest_power_of_2(uint64_t v)
     return ++ v;
 }
 
-#ifdef __GNUC__
+#ifdef __clang__
+// On clang, the size_t is a type of its own, so we need to overload for size_t.
+// On MSC, the size_t type aliases to uint64_t / uint32_t, so the following code
+// gives a duplicate symbol error.
 inline size_t next_highest_power_of_2(size_t v)
 { 
 #if sizeof(size_t) == sizeof(uint32_t)