From 36c0b931a4aed5e1593575468641816ffdc02398 Mon Sep 17 00:00:00 2001 From: Varun Agrawal Date: Fri, 6 Sep 2024 10:46:50 -0400 Subject: [PATCH] replace emplace_back with emplace_shared and make shared_ptr const& --- gtsam/hybrid/HybridBayesNet.h | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/gtsam/hybrid/HybridBayesNet.h b/gtsam/hybrid/HybridBayesNet.h index 9876e6fc1..8fae4061d 100644 --- a/gtsam/hybrid/HybridBayesNet.h +++ b/gtsam/hybrid/HybridBayesNet.h @@ -98,22 +98,23 @@ class GTSAM_EXPORT HybridBayesNet : public BayesNet { * @param conditional The conditional as a shared pointer. */ template - void push_back(std::shared_ptr conditional) { + void push_back(const std::shared_ptr &conditional) { factors_.push_back(std::make_shared(conditional)); } /** - * Preferred: add a conditional directly using a pointer. + * Preferred: Emplace a conditional directly using arguments. * * Examples: - * hbn.emplace_back(new GaussianMixture(...))); - * hbn.emplace_back(new GaussianConditional(...))); - * hbn.emplace_back(new DiscreteConditional(...))); + * hbn.emplace_shared(...))); + * hbn.emplace_shared(...))); + * hbn.emplace_shared(...))); */ - template - void emplace_back(Conditional *conditional) { - factors_.push_back(std::make_shared( - std::shared_ptr(conditional))); + template + void emplace_shared(Args &&...args) { + auto cond = std::allocate_shared( + Eigen::aligned_allocator(), std::forward(args)...); + factors_.push_back(std::make_shared(std::move(cond))); } /**