[cfe-commits] [libcxx] r153968 - in /libcxx/trunk: include/utility src/utility.cpp
Howard Hinnant
hhinnant at apple.com
Tue Apr 3 14:54:38 PDT 2012
On Apr 3, 2012, at 5:52 PM, Eli Friedman wrote:
> On Tue, Apr 3, 2012 at 2:09 PM, Howard Hinnant <hhinnant at apple.com> wrote:
>> Author: hhinnant
>> Date: Tue Apr 3 16:09:48 2012
>> New Revision: 153968
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=153968&view=rev
>> Log:
>> constexpr support for <utility>. Patch contributed by Jonathan Sauer.
>>
>> Modified:
>> libcxx/trunk/include/utility
>> libcxx/trunk/src/utility.cpp
>>
>> Modified: libcxx/trunk/include/utility
>> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/include/utility?rev=153968&r1=153967&r2=153968&view=diff
>> ==============================================================================
>> --- libcxx/trunk/include/utility (original)
>> +++ libcxx/trunk/include/utility Tue Apr 3 16:09:48 2012
>> @@ -206,8 +206,11 @@
>> }
>>
>> struct _LIBCPP_VISIBLE piecewise_construct_t { };
>> -//constexpr
>> +#ifdef _LIBCPP_HAS_NO_CONSTEXPR
>> extern const piecewise_construct_t piecewise_construct;// = piecewise_construct_t();
>> +#else
>> +constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t();
>> +#endif
>>
>> template <class _T1, class _T2>
>> struct _LIBCPP_VISIBLE pair
>> @@ -221,7 +224,7 @@
>> // pair(const pair&) = default;
>> // pair(pair&&) = default;
>>
>> - _LIBCPP_INLINE_VISIBILITY pair() : first(), second() {}
>> + _LIBCPP_INLINE_VISIBILITY _LIBCPP_CONSTEXPR pair() : first(), second() {}
>>
>> _LIBCPP_INLINE_VISIBILITY pair(const _T1& __x, const _T2& __y)
>> : first(__x), second(__y) {}
>>
>> Modified: libcxx/trunk/src/utility.cpp
>> URL: http://llvm.org/viewvc/llvm-project/libcxx/trunk/src/utility.cpp?rev=153968&r1=153967&r2=153968&view=diff
>> ==============================================================================
>> --- libcxx/trunk/src/utility.cpp (original)
>> +++ libcxx/trunk/src/utility.cpp Tue Apr 3 16:09:48 2012
>> @@ -11,6 +11,8 @@
>>
>> _LIBCPP_BEGIN_NAMESPACE_STD
>>
>> +#ifdef _LIBCPP_HAS_NO_CONSTEXPR
>> const piecewise_construct_t piecewise_construct = {};
>> +#endif
>>
>> _LIBCPP_END_NAMESPACE_STD
>
> This seems dangerous: we don't want the ABI of libc++ to depend on
> _LIBCPP_HAS_NO_CONSTEXPR.
>
> -Eli
Agreed. I have not yet built a constexpr enabled clang. Once I do I will investigate the best way to handle this.
Howard
More information about the cfe-commits
mailing list