Skip to content

Traits changes in libc++ 9 break compilations with ogre-2.3.3 #541

Description

@j-rivero

System Information

  • Ogre Version: 2.3.3
  • Operating System / Platform: OSX via Conda
  • RenderSystem: -
  • GPU: -

Detailled description

The gz-rendering compilation seems to be broken on Conda using ogre-2.3.3 for Mac, see conda-forge/gz-rendering-feedstock#42 (comment).

I think that the problem is a change in the libc++ , concretely in 19 version;

The base template for std::char_traits has been removed in LLVM 19. If you are using std::char_traits with types other than char, wchar_t, char8_t, char16_t, char32_t or a custom character type for which you specialized std::char_traits, your code will stop working. The Standard does not mandate that a base template is provided, and such a base template is bound to be incorrect for some types, which could currently cause unexpected behavior while going undetected.

Line 235 in OgreUTFString seems to be triggering the error by a template expansion over dstring that uses a uint32.

Probably the right move would be to transform dstring into std::u16string or something that uses char16_t instead of uint16. But I'm unsure about the implications in maintaining the API/ABI compatibility and if there is a better alternative.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions