add container SFINAE for hybrid nonlinear factor graph push_back
parent
83dd813bff
commit
4f22a06519
|
|
@ -42,6 +42,16 @@ class GTSAM_EXPORT HybridNonlinearFactorGraph : public HybridFactorGraph {
|
|||
using IsNonlinear = typename std::enable_if<
|
||||
std::is_base_of<NonlinearFactor, FACTOR>::value>::type;
|
||||
|
||||
/// Check if T has a value_type derived from FactorType.
|
||||
template <typename T>
|
||||
using HasDerivedValueType = typename std::enable_if<
|
||||
std::is_base_of<HybridFactor, typename T::value_type>::value>::type;
|
||||
|
||||
/// Check if T has a pointer type derived from FactorType.
|
||||
template <typename T>
|
||||
using HasDerivedElementType = typename std::enable_if<std::is_base_of<
|
||||
HybridFactor, typename T::value_type::element_type>::value>::type;
|
||||
|
||||
public:
|
||||
using Base = HybridFactorGraph;
|
||||
using This = HybridNonlinearFactorGraph; ///< this class
|
||||
|
|
@ -114,15 +124,13 @@ class GTSAM_EXPORT HybridNonlinearFactorGraph : public HybridFactorGraph {
|
|||
* copied)
|
||||
*/
|
||||
template <typename CONTAINER>
|
||||
Base::Base::HasDerivedElementType<CONTAINER> push_back(
|
||||
const CONTAINER& container) {
|
||||
HasDerivedElementType<CONTAINER> push_back(const CONTAINER& container) {
|
||||
Base::push_back(container.begin(), container.end());
|
||||
}
|
||||
|
||||
/// Push back non-pointer objects in a container (factors are copied).
|
||||
template <typename CONTAINER>
|
||||
Base::Base::HasDerivedValueType<CONTAINER> push_back(
|
||||
const CONTAINER& container) {
|
||||
HasDerivedValueType<CONTAINER> push_back(const CONTAINER& container) {
|
||||
Base::push_back(container.begin(), container.end());
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue