Implement LWG 2488 - Make the placeholders constexpr.

This patch makes the bind placeholders in std::placeholders both (1) const and
(2) constexpr (See below).

This is technically a breaking change for any code using the placeholders
outside of std::bind and depending on them being non-const. However I don't
think this will break any real world code.

(1) Previously the placeholders were non-const extern globals in all
dialects. This patch changes these extern globals to be const in all dialects.
Since the cv-qualifiers don't participate in name mangling for globals this
is an ABI compatible change.

(2) Make the placeholders constexpr in C++11 and beyond. Although LWG 2488 only
applies to C++17 I don't see any reason not to backport this change.

llvm-svn: 273824
Cr-Mirrored-From: sso://chromium.googlesource.com/_direct/external/github.com/llvm/llvm-project
Cr-Mirrored-Commit: 555330719a31dd4294741493781bebe41cd6afbb
diff --git a/src/bind.cpp b/src/bind.cpp
index cab0b7c..b318fc1 100644
--- a/src/bind.cpp
+++ b/src/bind.cpp
@@ -7,6 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 
+#define _LIBCPP_BUILDING_BIND
 #include "functional"
 
 _LIBCPP_BEGIN_NAMESPACE_STD
@@ -14,16 +15,16 @@
 namespace placeholders
 {
 
-__ph<1>   _1;
-__ph<2>   _2;
-__ph<3>   _3;
-__ph<4>   _4;
-__ph<5>   _5;
-__ph<6>   _6;
-__ph<7>   _7;
-__ph<8>   _8;
-__ph<9>   _9;
-__ph<10> _10;
+const __ph<1>   _1{};
+const __ph<2>   _2{};
+const __ph<3>   _3{};
+const __ph<4>   _4{};
+const __ph<5>   _5{};
+const __ph<6>   _6{};
+const __ph<7>   _7{};
+const __ph<8>   _8{};
+const __ph<9>   _9{};
+const __ph<10> _10{};
 
 }  // placeholders