Index: src/experimental/filesystem/operations.cpp =================================================================== --- src/experimental/filesystem/operations.cpp +++ src/experimental/filesystem/operations.cpp @@ -19,7 +19,15 @@ #include #include #include /* values for fchmodat */ -#if !defined(UTIME_OMIT) + +// We can use the presence of UTIME_OMIT to detect platforms that do not +// provide utimensat, with some exceptions on OS X. +#if !defined(UTIME_OMIT) || \ + (defined(__MAC_OS_X_VERSION_MIN_REQUIRED) && __MAC_OS_X_VERSION_MIN_REQUIRED < 1030) +#define _LIBCPP_HAS_NO_UTIMENSAT +#endif + +#if defined(_LIBCPP_HAS_NO_UTIMENSAT) #include // for ::utimes as used in __last_write_time #endif @@ -682,9 +690,7 @@ using namespace std::chrono; std::error_code m_ec; - // We can use the presence of UTIME_OMIT to detect platforms that do not - // provide utimensat. -#if !defined(UTIME_OMIT) +#if defined(_LIBCPP_HAS_NO_UTIMENSAT) // This implementation has a race condition between determining the // last access time and attempting to set it to the same value using // ::utimes