bcraig added inline comments.

================
Comment at: include/__threading_support:201
@@ +200,3 @@
+// Mutex
+#define _LIBCPP_MUTEX_INITIALIZER nullptr
+struct __libcpp_platform_mutex_t;
----------------
rmaprath wrote:
> bcraig wrote:
> > I'm not sure I like taking the freedom to define _LIBCPP_MUTEX_INITIALIZER 
> > away from implementers.
> > 
> > Would it be too terrible to replace this entire #elif block with something 
> > like the following?
> > 
> > ```
> > #if !defined(__has_include) || __has_include(<os_provided_thread.h>)
> > #include <os_provided_thread.h>
> > #else
> > #error "_LIBCPP_THREAD_API_EXTERNAL requires the implementer to provide 
> > <os_provided_thread.h> in the include path"
> > #endif
> > ```
> > 
> > 
> The problem is that, `std::mutex` constructor needs to be `constexpr` (as you 
> pointed out earlier). And since `__libcpp_mutex_t` is a pointer type (for 
> this externally threaded variant), sensible definitions for 
> `_LIBCPP_MUTEX_INITIALIZER` are limited.
> 
> Other than `nullptr`, one may be able to define `_LIBCPP_MUTEX_INITIALIZER` 
> to be a pointer to some constant mutex (presuming that make it `constexpr` 
> OK?) but I'm not convinced if such a setup would be very useful.
> 
> Hope that sounds sensible?
If the implementer gets to provide an entire header, then they also get to 
choose what libcpp_mutex_t will be.  They could make it a struct.


http://reviews.llvm.org/D20328



_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to