math/openfst-vosk: fix build with clang and libc++ 19

With clang and libc++ 19 math/openfst-vosk fails to compile, with errors
similar to:

  ./../include/fst/fst.h:704:15: error: no viable overloaded '='
    704 |     isymbols_ = impl.isymbols_ ? impl.isymbols_->Copy() : nullptr;
        |     ~~~~~~~~~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  /usr/include/c++/v1/__memory/unique_ptr.h:231:67: note: candidate function not viable: no known conversion from 'SymbolTable *' to 'unique_ptr<SymbolTable>' for 1st argument
    231 |   _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 unique_ptr& operator=(unique_ptr&& __u) _NOEXCEPT {
        |                                                                   ^         ~~~~~~~~~~~~~~~~
  /usr/include/c++/v1/__memory/unique_ptr.h:241:67: note: candidate template ignored: could not match 'unique_ptr<_Up, _Ep>' against 'SymbolTable *'
    241 |   _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 unique_ptr& operator=(unique_ptr<_Up, _Ep>&& __u) _NOEXCEPT {
        |                                                                   ^
  /usr/include/c++/v1/__memory/unique_ptr.h:263:67: note: candidate function not viable: no known conversion from 'SymbolTable *' to 'nullptr_t' (aka 'std::nullptr_t') for 1st argument
    263 |   _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX23 unique_ptr& operator=(nullptr_t) _NOEXCEPT {
        |                                                                   ^         ~~~~~~~~~
  /usr/include/c++/v1/__memory/unique_ptr.h:138:59: note: candidate function (the implicit copy assignment operator) not viable: no known conversion from 'SymbolTable *' to 'const unique_ptr<SymbolTable>' for 1st argument
    138 | class _LIBCPP_UNIQUE_PTR_TRIVIAL_ABI _LIBCPP_TEMPLATE_VIS unique_ptr {
        |                                                           ^~~~~~~~~~

and:

  ./../include/fst/bi-table.h:330:25: error: no member named 's_' in 'VectorHashBiTable<I, T, S, FP, H, HS>'
    330 |       : selector_(table.s_),
        |                   ~~~~~ ^

The first error can be fixed by using `std::unique_ptr<>::reset` instead
of the assignment operator. The second error can be fixed by using the
correct class member, `selector_`.

PR:		282513
Approved by:	yuri (maintainer)
MFH:		2024Q3
This commit is contained in:
Dimitry Andric 2024-11-03 12:47:38 +01:00
parent ff1cc6771e
commit e8b22e75d7
2 changed files with 24 additions and 0 deletions

View file

@ -0,0 +1,11 @@
--- src/include/fst/bi-table.h.orig 2021-02-07 08:38:45 UTC
+++ src/include/fst/bi-table.h
@@ -327,7 +327,7 @@ class VectorHashBiTable {
}
VectorHashBiTable(const VectorHashBiTable<I, T, S, FP, H, HS> &table)
- : selector_(table.s_),
+ : selector_(table.selector_),
fp_(table.fp_),
h_(table.h_),
id2entry_(table.id2entry_),

View file

@ -0,0 +1,13 @@
--- src/include/fst/fst.h.orig 2021-02-07 08:38:45 UTC
+++ src/include/fst/fst.h
@@ -701,8 +701,8 @@ class FstImpl {
properties_.store(impl.properties_.load(std::memory_order_relaxed),
std::memory_order_relaxed);
type_ = impl.type_;
- isymbols_ = impl.isymbols_ ? impl.isymbols_->Copy() : nullptr;
- osymbols_ = impl.osymbols_ ? impl.osymbols_->Copy() : nullptr;
+ isymbols_.reset(impl.isymbols_ ? impl.isymbols_->Copy() : nullptr);
+ osymbols_.reset(impl.osymbols_ ? impl.osymbols_->Copy() : nullptr);
return *this;
}