MRPT 2.0 includes several fundamental changes, most of them related to API clean ups and the introduction of C++14 as the minimum supported version of the language.
Existing user applications may need to be adapted to continue compiling and working as usual after updating to MRPT 2.*:
Mandatory changes
PROJECT
:std::shared_ptr<>
instead of those based on stlplus
. Required changes:ptr.clear()
--> ptr.reset()
. Also, notice that the former stlplus
semantics of clear()
deleting all copies of the object, as hold by different smart pointers, is no longer maintained. There is no longer such a possibility, since the C++11 standard does not allow it to happen (and it makes sense in this way).ptr.clear_unique()
--> ptr.reset()
. (Read this note above)ptr.make_unique()
does no longer exists, and does not make sense (read above).ptr.pointer()
--> ptr.get()
CFooPtr
to the more standard CFoo::Ptr
, with a new pointer-to-const version CFoo::ConstPtr
.CFoo::Ptr
smart pointers. Refer to changelog of mrpt 1.5.4.std::make_shared<CFoo>()
, or mrpt::make_aligned_shared<CFoo>()
if the class must be memory-aligned (typically, if it contains Eigen matrices). The arguments of Create()
are now perfectly-forwarded to the class ctor, so the parameter list must exactly match any of the available ctors.mrpt::synch::CCriticalSection cs;
--> std::mutex cs;
mrpt::synch::CCriticalSectionLocker lock(&cs);
--> std::lock_guard<std::mutex> lock(cs);
mrpt::system::TThreadHandle h = mrpt::system::createThread(...);
--> std::thread h = std::thread(...);
mrpt::system::sleep(5);
--> std::this_thread::sleep_for(5ms);
mrpt::synch::CSemaphore sem; sem.waitForSignal(timeout); sem.release();
--> std::promise<void> sem; auto fut = sem.get_future(); fut.wait_for(...); sem.set_value();
mrpt::utils::CObject::duplicate()
has been removed, use the equivalent (redundant) mrpt::utils::CObject::clone()
.mrpt::utils::net
, sockets: have been moved to its own new module [mrpt-comms] under namespace mrpt::comms
.mrpt::math::randomGenerator
--> mrpt::math::getRandomGenerator()
mrpt::global_settings
old static variables have been replaced by getter/setter functions.ASSERT_*
macros must now be ended with a semicolon, e.g. ASSERT_(a>0);
writeToStream()
and readFromStream()
of old CSerializable
classes must be replaced by the three methods: serializeGetVersion()
, serializeTo()
, and serializeTo()
. See tutorials in [mrpt-serialization].using
. Example:Optional changes
Foo::ConstPtr
smart pointers when possible instead of its non-const counterpart. Page generated by Doxygen 1.8.17 for MRPT 1.9.9 Git: ad3a9d8ae Tue May 1 23:10:22 2018 -0700 at miƩ 12 jul 2023 10:03:34 CEST |