From: Renato P. <re...@gm...> - 2018-07-04 21:00:24
|
Thanks. Will try that. It is constant size. In fact, I could make my way through in a dirty pair<int, pair<int, pair<int, int> > > I'm debugging something else right now. I will have to come back later an ddo the specialization. Thanks, Renato On Wed, Jul 4, 2018 at 5:50 PM, Roy Stogner <roy...@ic...> wrote: > > On Wed, 4 Jul 2018, Renato Poli wrote: > > I am trying to implement this one: comm().allgather(vector<MyClass>). >> >> The compiler fails. >> It says MyClass is not a StandardType. >> I tried with a tuple<>, without success. >> > > There actually is a StandardType<tuple<Foo...>> specialization, but > it's untested and it's only useable if all the Foo types also have > StandardType specializations. > > Any suggestion? >> Should I specialize a Packing<MyClass *> or so? >> > > Is your class a tuple of built-in constant-size types (or of other > tuples of built-in types, and so on)? If so then please you can help > us debug whatever's going wrong with StandardType<tuple>? > > If not, then is your class of constant size? If so then you can > specialize StandardType<MyClass>; see the StandardType<pair> case in > standard_type.h for the best example of what to do. There are more > examples in parallel_algebra.h that might also be helpful. > > If you have a variable size class... then we're in uncharted > territory: > > I can see that for vector<string>, everything works fine. >> > > That's a special hand-coded case, I'm afraid. We haven't currently > got any allgather_packed_range suitable for arbitrary size > (de)serializable types. > --- > Roy > |