>>102367744
>>102367765
also depending on the way CTAD is and whatever standard brace elision was added in you might be able to remove the second level of braces
to sum it up in theory the following are all equivalent and all implicitly constexpr if vec3 and vec2 are (which they should be)
NVal{ vec3{1.0f, 1.0f, 1.0f}, vec2{2.0f, 2.0f} };
NVal { {1.0f, 1.0f, 1.0f}, {2.0f, 2.0f} };
NVal{ 1.0f, 1.0f, 1.0f, 2.0f, 2.0f};
NVal{ .local = vec3{1.0f, 1.0f, 1.0f}, .external = vec2{2.0f, 2.0f} };
NVal{ .local = {1.0f, 1.0f, 1.0f}, .external = {2.0f, 2.0f} };
marking it explicitly constexpr by creating an actual constructor like the retard using AI suggested is a bad idea, being aggregate initializable has a bunch of requirements but comes with benefits