diff --git a/eo/src/eoAlgoFoundry.h b/eo/src/eoAlgoFoundry.h index 19a3a4692..b9e4eb638 100644 --- a/eo/src/eoAlgoFoundry.h +++ b/eo/src/eoAlgoFoundry.h @@ -62,6 +62,11 @@ class eoAlgoFoundry : public eoAlgo return _size; } + std::vector encoding() const + { + return _encoding; + } + protected: const size_t _size; std::vector _encoding; diff --git a/eo/src/eoForge.h b/eo/src/eoForge.h index ac4c6123e..f56666991 100644 --- a/eo/src/eoForge.h +++ b/eo/src/eoForge.h @@ -265,12 +265,23 @@ class eoForgeVector : public std::vector*> template void setup(size_t index, Args... args) { - assert(this->at(index) != nullptr); - delete this->at(index); + assert(index < this->size()); + delete this->at(index); // Silent on nullptr. auto pfo = new eoForgeOperator(args...); this->at(index) = pfo; } + /** Specialization for empty constructors. + */ + template + void setup(size_t index) + { + assert(index < this->size()); + delete this->at(index); + auto pfo = new eoForgeOperator; + this->at(index) = pfo; + } + /** Instanciate the operator managed at the given index. */ Itf& instanciate(size_t index)