mirror of
https://github.com/llvm-mirror/libcxx.git
synced 2025-10-23 01:18:52 +08:00
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. git-svn-id: https://llvm.org/svn/llvm-project/libcxx/trunk@273824 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
21
src/bind.cpp
21
src/bind.cpp
@@ -7,6 +7,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#define _LIBCPP_BUILDING_BIND
|
||||
#include "functional"
|
||||
|
||||
_LIBCPP_BEGIN_NAMESPACE_STD
|
||||
@@ -14,16 +15,16 @@ _LIBCPP_BEGIN_NAMESPACE_STD
|
||||
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
|
||||
|
||||
|
Reference in New Issue
Block a user