Merge bitcoin/bitcoin#26992: refactor: Remove unused CDataStream SerializeMany constructor

fa47b28dfc refactor: Remove unused CDataStream SerializeMany constructor (MarcoFalke)

Pull request description:

  Seems odd to have an unused method. Moreover, the function is fragile and dangerous, because one could have a `std::vector vec_a` and type `CDataStream{vec_a, 0, 0}.size()` and `CDataStream{0, 0, vec_a}.size()`, assuming they are the same thing, when in fact they are not. (The first takes over the memory as is, the second serializes the vector).

  So my suggestion would be to remove the unused method and introduce a new method when this functionality is needed. For example: `static DataStream FromMany(Args&&... args)`.

ACKs for top commit:
  stickies-v:
    ACK fa47b28dfc

Tree-SHA512: 9593a034b997e33a0794f779f76f02425b1097b218cf8cb1facb7f874fa69da328ce567a79138015baeebe004ae7d103dda4f64f83e8ad375b6dae6b66d3d950
This commit is contained in:
fanquake
2023-02-02 10:39:17 +00:00
2 changed files with 2 additions and 9 deletions

View File

@@ -358,14 +358,6 @@ public:
nType{nTypeIn},
nVersion{nVersionIn} {}
template <typename... Args>
CDataStream(int nTypeIn, int nVersionIn, Args&&... args)
: nType{nTypeIn},
nVersion{nVersionIn}
{
::SerializeMany(*this, std::forward<Args>(args)...);
}
int GetType() const { return nType; }
void SetVersion(int n) { nVersion = n; }
int GetVersion() const { return nVersion; }