Код: Выделить всё
SUTIL_INLINE SUTIL_HOSTDEVICE float lerp(const float a, const float b, const float t)
{
return a + t*(b-a);
}
Код: Выделить всё
In file included from /home/mori/software/KM3/eic-opticks/sysrap/sphoton.h:183,
from /home/mori/software/KM3/eic-opticks/sysrap/storch.h:37,
from /home/mori/software/KM3/eic-opticks/src/config.h:8,
from /home/mori/software/KM3/eic-opticks/src/config.cpp:14:
/home/mori/software/KM3/eic-opticks/sysrap/scuda.h:130:85: error: 'float lerp(float, float, float)' conflicts with a previous declaration
130 | SUTIL_INLINE SUTIL_HOSTDEVICE float lerp(const float a, const float b, const float t)
| ^
In file included from /usr/include/c++/15.2.1/valarray:41,
from /home/mori/software/install/cpp20/NLOHMANNJSON_v3.11.3/include/nlohmann/detail/conversions/from_json.hpp:21,
from /home/mori/software/install/cpp20/NLOHMANNJSON_v3.11.3/include/nlohmann/adl_serializer.hpp:14,
from /home/mori/software/install/cpp20/NLOHMANNJSON_v3.11.3/include/nlohmann/json.hpp:34,
from /home/mori/software/KM3/eic-opticks/src/config.cpp:9:
/usr/include/c++/15.2.1/cmath:3857:3: note: previous declaration 'constexpr float std::lerp(float, float, float)'
3857 | lerp(float __a, float __b, float __t) noexcept
| ^~~~
Код: Выделить всё
#ifdef __cpp_lib_interpolate // C++ >= 20
// linear interpolation
. . .
constexpr float
lerp(float __a, float __b, float __t) noexcept
{ return std::__lerp(__a, __b, __t); }
Что я здесь не понимаю, так это то, почему функция в глобальном пространстве имен конфликтует с другой функцией в пространстве имен std::, даже в той же единице перевода. Я проверил отсутствие директивы using namespace std; в единице перевода, скомпилировав с флагом -E и проверив полученный исходный файл.
Мне нужно скомпилировать с помощью C++20, поэтому буду благодарен за любую помощь/подсказку.
Подробнее здесь: https://stackoverflow.com/questions/798 ... efinitions
Мобильная версия