3rdparty/sol2: Fixed build with clang 19.

sol::optional<T&>::emplace was broken, and depended on the compiler not
checking that members exist if the template wasn't instantiated.  See
ThePHD/sol2#1606 and ThePHD/sol2#1648.
This commit is contained in:
Vas Crabb 2024-11-18 06:19:06 +11:00
parent 5f85aff327
commit c75845b1ef

View File

@ -6747,12 +6747,9 @@ namespace sol {
/// one. /// one.
/// ///
/// \group emplace /// \group emplace
template <class... Args> T& emplace(T& arg) noexcept {
T& emplace(Args&&... args) noexcept { m_value = &arg;
static_assert(std::is_constructible<T, Args&&...>::value, "T must be constructible with Args"); return **this;
*this = nullopt;
this->construct(std::forward<Args>(args)...);
} }
/// Swaps this optional with the other. /// Swaps this optional with the other.