I fixed the problem by using dest.push_back(static_cast<T>(val)); to append values, in a new private function _append (the underscore is intended to make it clear that this is not a public function; I can use a longer name without an underscore if you prefer).
I also fixed the compiler warnings in
DM-13220 with another commit. The solution has a bit more duplication than I like, but it is simple and readable and I could not find a way to use std::enable_if.
I also modernized the C++ code in PropertySet.cc and PropertyList.cc and took another clang-format pass on all the C++.