Skip to content

Wrong member initialization order in XamlUserType+XamlMember #11097

@trueqbit

Description

@trueqbit

Describe the bug

I am using MSVC compiler option /we to treat warning C5038 - out-of-order initialization of members - as an error.

The C++ code generator of a WinUI 3 project generates constructors for XamlUserType and XamlMember with members initialized out-of-order, so my project fails to compile.

Irrespective of my specific compiler settings the generator should emit correct code.

1>  XamlTypeInfo.Impl.g.cpp
1>\Generated Files\XamlTypeInfo.Impl.g.cpp(308,15): error C5038: data member 'winrt::Lozenge::implementation::XamlUserType::_fullName' will be initialized after data member 'winrt::Lozenge::implementation::XamlUserType::_baseType'
1>  (compiling source file '/Generated%20Files/XamlTypeInfo.Impl.g.cpp')
1>\Generated Files\XamlTypeInfo.Impl.g.cpp(575,15): error C5038: data member 'winrt::Lozenge::implementation::XamlMember::_provider' will be initialized after data member 'winrt::Lozenge::implementation::XamlMember::_name'
1>  (compiling source file '/Generated%20Files/XamlTypeInfo.Impl.g.cpp')

Steps to reproduce the bug

  1. Create a new C++ project from template "WinUI Blank App (Packaged)"
  2. Edit project properties -> Configuration Properties -> C/C++ -> Advanced -> Treat Specific Warnings As Error -> 5038 (also see screenshot);
    Alternatively set the warning level for this error as an Additional Option: /w1"5038".
  3. Build
  4. Observe the reported error (or warning).

Expected behavior

XamlTypeInfo.Impl.g.cpp should compile without warnings or errors.
Irrespective of my specific compiler settings the generator should emit correct code.

Screenshots

Image

NuGet package version

1.8.251003001, 2.0.1

Packaging type

Unpackaged, Packaged (MSIX)

Windows version

Windows 11 version 24H2 (26100, June 2025 Update)

IDE

Visual Studio 2022, Other

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    needs-triageIssue needs to be triaged by the area owners

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions