From b3025fcc0af2b7a2aee7f5537268910909f91b5c Mon Sep 17 00:00:00 2001 From: Wolfgang Bangerth Date: Tue, 1 Oct 2013 00:24:55 +0000 Subject: [PATCH] Work around an issue in a copy constructor we needed for C++11 compatibility and Intel's ICC. git-svn-id: https://svn.dealii.org/trunk@31054 0785d39b-7218-0410-832d-ea1e28bc413d --- deal.II/include/deal.II/base/work_stream.h | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/deal.II/include/deal.II/base/work_stream.h b/deal.II/include/deal.II/base/work_stream.h index 99e3b7d4c2..5c7b05d500 100644 --- a/deal.II/include/deal.II/base/work_stream.h +++ b/deal.II/include/deal.II/base/work_stream.h @@ -189,12 +189,16 @@ namespace WorkStream //TODO: when we push back an object to the list of scratch objects, in // Worker::operator(), we first create an object and then copy -// it to the end of this list. We should avoid the copy operations -// since it is expensive +// it to the end of this list. this involves having two objects +// of the current type having pointers to it, each with their own +// currently_in_use flag. there is probably little harm in this because +// the original one goes out of scope right away again, but it's +// certainly awkward. one way to avoid this would be to use unique_ptr +// but we'd need to figure out a way to use it in non-C++11 mode ScratchDataObject (const ScratchDataObject &o) : - scratch_data (new ScratchData(*o.scratch_data)), - currently_in_use (false) + scratch_data (o.scratch_data), + currently_in_use (o.currently_in_use) {} }; -- 2.39.5