Project

General

Profile

Bug #10627

Updated by Kyle Knoepfel over 4 years ago

This might not be a bug but I am not sure how else to file it.

Mu2e has an output module Analyses/src/DataProductDump_module.cc

This module predates the file dumper output module and does similar work; we are keeping it around as an example.

This module is created from an output module template:

<pre><code class="cpp">


namespace mu2e {

class DataProductDumpDetail;

typedef art::ProvenanceDumper<DataProductDumpDetail> DataProductDump;

}


class mu2e::DataProductDumpDetail {

// contents deleted.

};


DEFINE_ART_MODULE(mu2e::DataProductDump);
</code></pre>


We jumped from art v1_15_00 to art v1_17_02. In art v1_15_00 the module compiled. In art v1_17_02 we had to add an empty definition of the struct Config in order for the module to compile:

<pre><code class="cpp">


class mu2e::DataProductDumpDetail {

public:

struct Config {};

// contents deleted.

};
</code></pre>


I think that the reason is that the module template now does checking of its parameter set. I think that this forces the detail class to check it's parameter set. Our detail class does not use any parameters providing a correct Config class is trivial.

This should be better documented. We should also have a discussion among the stakeholders about the desired behaviour in this situation: if a module template uses the parameter set validation do we want to require that the detail class does too? What options are there? In the long run I think that forced validation is good. The question is if we need a different policy for the transition period ( it is also possible that for this very narrow question the transition period is now over ).

Back