From 37ef15143a5d77a0fba0ece4c26a72cfb9e050a0 Mon Sep 17 00:00:00 2001 From: zoecarver Date: Sat, 23 May 2020 14:43:12 -0700 Subject: [PATCH] [libcxx] Fix C++14 and up constexpr members in MoveOnly. Summary: a4b8ee6 made all MoveOnly members constexpr but, some members and constructors contain expressions that are only valid in C++14 and later. This patch prefixes those methods and constructors with TEST_CONSTEXPR_CXX14. Reviewers: ldionne, #libc! Subscribers: dexonsmith, libcxx-commits Tags: #libc Differential Revision: https://reviews.llvm.org/D80482 --- libcxx/test/support/MoveOnly.h | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/libcxx/test/support/MoveOnly.h b/libcxx/test/support/MoveOnly.h index f9e9298..adcae25 100644 --- a/libcxx/test/support/MoveOnly.h +++ b/libcxx/test/support/MoveOnly.h @@ -24,17 +24,19 @@ class MoveOnly int data_; public: constexpr MoveOnly(int data = 1) : data_(data) {} - constexpr MoveOnly(MoveOnly&& x) + TEST_CONSTEXPR_CXX14 MoveOnly(MoveOnly&& x) : data_(x.data_) {x.data_ = 0;} - constexpr MoveOnly& operator=(MoveOnly&& x) + TEST_CONSTEXPR_CXX14 MoveOnly& operator=(MoveOnly&& x) {data_ = x.data_; x.data_ = 0; return *this;} constexpr int get() const {return data_;} constexpr bool operator==(const MoveOnly& x) const {return data_ == x.data_;} constexpr bool operator< (const MoveOnly& x) const {return data_ < x.data_;} - constexpr MoveOnly operator+(const MoveOnly& x) const { return MoveOnly{data_ + x.data_}; } - constexpr MoveOnly operator*(const MoveOnly& x) const { return MoveOnly{data_ * x.data_}; } + TEST_CONSTEXPR_CXX14 MoveOnly operator+(const MoveOnly& x) const + { return MoveOnly{data_ + x.data_}; } + TEST_CONSTEXPR_CXX14 MoveOnly operator*(const MoveOnly& x) const + { return MoveOnly{data_ * x.data_}; } }; namespace std { -- 2.7.4