Bug#840461: openfoam: FTBFS (32-bit): ambiguous overload for 'operator<<'

Aaron M. Ucko amu at alum.mit.edu
Tue Oct 11 18:25:57 UTC 2016


Source: openfoam
Version: 4.0+dfsg1-3
Severity: important
Justification: fails to build from source

Builds of openfoam for 32-bit architectures have been failing:

  db/dictionary/functionEntries/codeStream/codeStream.C: In static member function 'static void (* Foam::functionEntries::codeStream::getFunction(const Foam::dictionary&, const Foam::dictionary&))(Foam::Ostream&, const Foam::dictionary&)':
  db/dictionary/functionEntries/codeStream/codeStream.C:200:44: error: ambiguous overload for 'operator<<' (operand types are 'Foam::Ostream' and 'off_t {aka long int}')

The problem is that, on these architectures, off_t is formally long
whereas int32_t (for which an operator<< variant exists) is formally
int; although the types are de facto equivalent on these
architectures, C++ insists on treating them as distinct.

I would suggest adding explicit long and unsigned long variants on
these architectures (but not 64-bit architectures, on which they'll
duplicate the existing [u]int64_t variants.)

Could you please take a look?

Thanks!

-- 
Aaron M. Ucko, KB1CJC (amu at alum.mit.edu, ucko at debian.org)
http://www.mit.edu/~amu/ | http://stuff.mit.edu/cgi/finger/?amu@monk.mit.edu



More information about the debian-science-maintainers mailing list