File indexing completed on 2023-03-17 10:49:33
0001
0002
0003
0004
0005
0006 #include <cassert>
0007 #include <iostream>
0008 #include <memory>
0009 #include <vector>
0010
0011 #include "DataFormats/Common/interface/Wrapper.h"
0012
0013 class CopyNoMove {
0014 public:
0015 CopyNoMove() {}
0016 CopyNoMove(CopyNoMove const&) {
0017 }
0018 CopyNoMove& operator=(CopyNoMove const&) {
0019 return *this;
0020 }
0021
0022 private:
0023 };
0024
0025 class MoveNoCopy {
0026 public:
0027 MoveNoCopy() {}
0028 MoveNoCopy(MoveNoCopy const&) = delete;
0029 MoveNoCopy& operator=(MoveNoCopy const&) = delete;
0030 MoveNoCopy(MoveNoCopy&&) {
0031 }
0032 MoveNoCopy& operator=(MoveNoCopy&&) {
0033 return *this;
0034 }
0035
0036 private:
0037 };
0038
0039 void work() {
0040 auto thing = std::make_unique<CopyNoMove>();
0041 edm::Wrapper<CopyNoMove> wrap(std::move(thing));
0042
0043 auto thing2 = std::make_unique<MoveNoCopy>();
0044 edm::Wrapper<MoveNoCopy> wrap2(std::move(thing2));
0045
0046 auto thing3 = std::make_unique<std::vector<double>>(10, 2.2);
0047 assert(thing3->size() == 10);
0048
0049 edm::Wrapper<std::vector<double>> wrap3(std::move(thing3));
0050 assert(wrap3->size() == 10);
0051 assert(thing3.get() == 0);
0052 }
0053
0054 int main() {
0055 int rc = 0;
0056 try {
0057 work();
0058 } catch (...) {
0059 rc = 1;
0060 std::cerr << "Failure: unidentified exception caught\n";
0061 }
0062 return rc;
0063 }