Chare constructors cannot take noncopyable types as arguments
Currently chare constructors take their arguments by const l-value reference, which prohibits passing non-copyable types to them. Instead they should take their arguments by value and std::move internally, to allow users to std::move the arguments.
Spectre currently has to work around this by editing our generated headers. They do so here:
spectre/cmake/SetupCharmModuleFunctions.cmake (line 33) does the modification.
build/src/Parallel/ConstGlobalCache.def.h is the generated and edited file.
This same file contains other uses of std::move on types after they are deserialized for efficiency, that we should also take into mainline charm.
This file also contains more uses of std::move similarly: build/src/Parallel/Algorithms/ArrayAlgorithm.def.h