diff --git a/include/basalt/utils/format.hpp b/include/basalt/utils/format.hpp new file mode 100644 index 0000000..5fecddf --- /dev/null +++ b/include/basalt/utils/format.hpp @@ -0,0 +1,65 @@ +/** +BSD 3-Clause License + +This file is part of the Basalt project. +https://gitlab.com/VladyslavUsenko/basalt.git + +Copyright (c) 2022, Vladyslav Usenko and Nikolaus Demmel. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +#pragma once + +#include +#include + +namespace basalt { + +// libfmt's string literal formatter implementation was deprecated in 2021-12, +// so provide our own (see also: +// https://github.com/fmtlib/fmt/issues/2640#issuecomment-1048894376) + +namespace literals { + +inline auto operator"" _format(const char* s, size_t n) { + return [=](auto&&... args) { +#if FMT_VERSION < 50000 + return fmt::format(s, args...); +#elif FMT_VERSION < 80100 + return fmt::format(std::string_view(s, n), args...); +#else + return fmt::format(fmt::runtime(std::string_view(s, n)), args...); +#endif + }; +} + +} // namespace literals + +// make the _format string literal available in the whole namespace +using namespace literals; + +} // namespace basalt diff --git a/src/utils/time_utils.cpp b/src/utils/time_utils.cpp index cb98ae6..3e8a6a3 100644 --- a/src/utils/time_utils.cpp +++ b/src/utils/time_utils.cpp @@ -1,17 +1,15 @@ #include +#include #include #include #include -#include #include #include namespace basalt { -using namespace fmt::literals; - // compute the median of an eigen vector // Note: Changes the order of elements in the vector! // Note: For even sized vectors we don't return the mean of the middle two, but diff --git a/src/vi_estimator/sqrt_keypoint_vio.cpp b/src/vi_estimator/sqrt_keypoint_vio.cpp index 55a7618..e7500dd 100644 --- a/src/vi_estimator/sqrt_keypoint_vio.cpp +++ b/src/vi_estimator/sqrt_keypoint_vio.cpp @@ -41,6 +41,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include #include @@ -55,8 +56,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace basalt { -using namespace fmt::literals; - template SqrtKeypointVioEstimator::SqrtKeypointVioEstimator( const Eigen::Vector3d& g_, const basalt::Calibration& calib_, diff --git a/src/vi_estimator/sqrt_keypoint_vo.cpp b/src/vi_estimator/sqrt_keypoint_vo.cpp index 968df71..78e9236 100644 --- a/src/vi_estimator/sqrt_keypoint_vo.cpp +++ b/src/vi_estimator/sqrt_keypoint_vo.cpp @@ -40,6 +40,7 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include #include #include @@ -54,8 +55,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. namespace basalt { -using namespace fmt::literals; - template SqrtKeypointVoEstimator::SqrtKeypointVoEstimator( const basalt::Calibration& calib_, const VioConfig& config_) diff --git a/src/vio.cpp b/src/vio.cpp index acb5812..855eaca 100644 --- a/src/vio.cpp +++ b/src/vio.cpp @@ -65,9 +65,11 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include +#include #include -using namespace fmt::literals; +// enable the "..."_format(...) string literal +using namespace basalt::literals; // GUI functions void draw_image_overlay(pangolin::View& v, size_t cam_id);