C++11 conformance and consistency: Added "move" constructors and assignment operators to OpenFOAM containers

Replaced all uses of complex Xfer class with C++11 "move" constructors and
assignment operators.  Removed the now redundant Xfer class.

This substantial changes improves consistency between OpenFOAM and the C++11 STL
containers and algorithms, reduces memory allocation and copy overhead when
returning containers from functions and simplifies maintenance of the core
libraries significantly.
This commit is contained in:
Henry Weller
2019-05-25 17:40:39 +01:00
parent 0889ff91c7
commit 30bea84fac
323 changed files with 3238 additions and 2500 deletions

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -80,8 +80,8 @@ int main(int argc, char *argv[])
list2.setSize(10, vector(1, 2, 3));
Info<< "list2: " << list2 << endl;
List<vector> list3(list2.xfer());
Info<< "Transferred via the xfer() method" << endl;
List<vector> list3(move(list2));
Info<< "Transferred move" << endl;
Info<< "list2: " << list2 << nl
<< "list3: " << list3 << endl;