Mercurial > thymian
annotate 3rdparty/vmime/cmake/cmake-cxx11/Modules/CheckCXX11Features/cxx11-test-rvalue-references.cpp @ 0:a4671277546c tip
created the repository for the thymian project
| author | ferencd |
|---|---|
| date | Tue, 17 Aug 2021 11:19:54 +0200 |
| parents | |
| children |
| rev | line source |
|---|---|
| ferencd@0 | 1 #include <cassert> |
| ferencd@0 | 2 |
| ferencd@0 | 3 class rvmove { |
| ferencd@0 | 4 public: |
| ferencd@0 | 5 void *ptr; |
| ferencd@0 | 6 char *array; |
| ferencd@0 | 7 |
| ferencd@0 | 8 rvmove() |
| ferencd@0 | 9 : ptr(0), |
| ferencd@0 | 10 array(new char[10]) |
| ferencd@0 | 11 { |
| ferencd@0 | 12 ptr = this; |
| ferencd@0 | 13 } |
| ferencd@0 | 14 |
| ferencd@0 | 15 rvmove(rvmove &&other) |
| ferencd@0 | 16 : ptr(other.ptr), |
| ferencd@0 | 17 array(other.array) |
| ferencd@0 | 18 { |
| ferencd@0 | 19 other.array = 0; |
| ferencd@0 | 20 other.ptr = 0; |
| ferencd@0 | 21 } |
| ferencd@0 | 22 |
| ferencd@0 | 23 ~rvmove() |
| ferencd@0 | 24 { |
| ferencd@0 | 25 assert(((ptr != 0) && (array != 0)) || ((ptr == 0) && (array == 0))); |
| ferencd@0 | 26 delete[] array; |
| ferencd@0 | 27 } |
| ferencd@0 | 28 |
| ferencd@0 | 29 rvmove &operator=(rvmove &&other) |
| ferencd@0 | 30 { |
| ferencd@0 | 31 delete[] array; |
| ferencd@0 | 32 ptr = other.ptr; |
| ferencd@0 | 33 array = other.array; |
| ferencd@0 | 34 other.array = 0; |
| ferencd@0 | 35 other.ptr = 0; |
| ferencd@0 | 36 return *this; |
| ferencd@0 | 37 } |
| ferencd@0 | 38 |
| ferencd@0 | 39 static rvmove create() |
| ferencd@0 | 40 { |
| ferencd@0 | 41 return rvmove(); |
| ferencd@0 | 42 } |
| ferencd@0 | 43 private: |
| ferencd@0 | 44 rvmove(const rvmove &); |
| ferencd@0 | 45 rvmove &operator=(const rvmove &); |
| ferencd@0 | 46 }; |
| ferencd@0 | 47 |
| ferencd@0 | 48 int main() |
| ferencd@0 | 49 { |
| ferencd@0 | 50 rvmove mine; |
| ferencd@0 | 51 if (mine.ptr != &mine) |
| ferencd@0 | 52 return 1; |
| ferencd@0 | 53 mine = rvmove::create(); |
| ferencd@0 | 54 if (mine.ptr == &mine) |
| ferencd@0 | 55 return 1; |
| ferencd@0 | 56 return 0; |
| ferencd@0 | 57 } |
