Mercurial > thymian
view 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 |
line wrap: on
line source
#include <cassert> class rvmove { public: void *ptr; char *array; rvmove() : ptr(0), array(new char[10]) { ptr = this; } rvmove(rvmove &&other) : ptr(other.ptr), array(other.array) { other.array = 0; other.ptr = 0; } ~rvmove() { assert(((ptr != 0) && (array != 0)) || ((ptr == 0) && (array == 0))); delete[] array; } rvmove &operator=(rvmove &&other) { delete[] array; ptr = other.ptr; array = other.array; other.array = 0; other.ptr = 0; return *this; } static rvmove create() { return rvmove(); } private: rvmove(const rvmove &); rvmove &operator=(const rvmove &); }; int main() { rvmove mine; if (mine.ptr != &mine) return 1; mine = rvmove::create(); if (mine.ptr == &mine) return 1; return 0; }
