我正在尝试使用Barton和Nackman技巧来实现类以避免动态调度。(我正在编写性能很重要的MCMC代码。)我不是C++专家,但基本技巧在其他地方对我有用。但是,我现在有一个情况需要对第二个派生类进行模板化。这似乎会导致问题。我的代码大纲是://GenericstepclasstemplateclassStep{public:DerivedStepType&as_derived(){returnstatic_cast(*this);}voidDoStep(){returnas_derived.DoStep();}};//Gibbssteptemplate//THISISTHEPROB
我最近正在阅读有关C++源代码的系列文章,“反射(reflection)的暂停:五个列表中的五个”。在PartV,ScottMeyers讨论了单位问题的Barton和Nackman解决方案。作为航空航天业的嵌入式软件工程师,这个特别的啊哈!瞬间让我兴奋。到目前为止,我还没有听说过这种方法(这些作者也没有听说过)。我进行了研究,试图找到有关该解决方案的更多信息。我在这里看到了这个演示文稿:http://se.ethz.ch/~meyer/publications/OTHERS/scott_meyers/dimensions.pdf我想我了解我阅读过的有关此解决方案的所有内容。但我觉得好像
什么是更可取的(如果有的话)?变体A(Barton-Nackman):templatestructequal_comparable{friendbooloperator==(constT&t1,constT&t2){returnt1.equalTo(t2);}};classMyClass:privateequal_comparable{boolequalTo(constMyClass&other)//...};变体B(std::enable_if):structMyClass{staticconstbooluse_my_equal=true;boolequalTo(constMyCla