Fixed TBB detection and make emplace great again

release/4.3a0
Fan Jiang 2020-06-02 20:01:51 -04:00
parent 23617fd430
commit 0675b82c1f
2 changed files with 7 additions and 3 deletions

View File

@ -42,6 +42,9 @@
// Whether we are using TBB (if TBB was found and GTSAM_WITH_TBB is enabled in CMake) // Whether we are using TBB (if TBB was found and GTSAM_WITH_TBB is enabled in CMake)
#cmakedefine GTSAM_USE_TBB #cmakedefine GTSAM_USE_TBB
// Whether we are using a TBB version higher than 2020
#cmakedefine TBB_GREATER_EQUAL_2020
// Whether we are using system-Eigen or our own patched version // Whether we are using system-Eigen or our own patched version
#cmakedefine GTSAM_USE_SYSTEM_EIGEN #cmakedefine GTSAM_USE_SYSTEM_EIGEN

View File

@ -179,11 +179,12 @@ namespace gtsam {
* j is already used. * j is already used.
* @param value The vector to be inserted. * @param value The vector to be inserted.
* @param j The index with which the value will be associated. */ * @param j The index with which the value will be associated. */
std::pair<VectorValues::iterator, bool> emplace(Key j, const Vector& value) { template<class... Args>
inline std::pair<VectorValues::iterator, bool> emplace(Key j, Args&&... args) {
#if ! defined(GTSAM_USE_TBB) || defined (TBB_GREATER_EQUAL_2020) #if ! defined(GTSAM_USE_TBB) || defined (TBB_GREATER_EQUAL_2020)
return values_.emplace(j, value); return values_.emplace(j, std::forward<Args>(args)...);
#else #else
return values_.insert(std::make_pair(j, value)); return values_.insert(std::make_pair(j, Vector(std::forward<Args>(args)...)));
#endif #endif
} }