On Sunday, 12 May 2019 at 18:47:20 UTC, Bogdan wrote:
On Sunday, 12 May 2019 at 17:53:56 UTC, Bastiaan Veelo wrote:
If I understand your question correctly, you have two enums of
equal length, and you want to convert members across enums
according to their position, right?
My question was very vague, sorry about that.
In my use case I'd like to map SDL2 keyboard scan codes to my
own game input keyboard codes. The two enums would look
something like this:
```
enum SDL_Scancode
{
SDL_SCANCODE_UNKNOWN = 0,
SDL_SCANCODE_A = 4,
SDL_SCANCODE_B = 5,
SDL_SCANCODE_C = 6,
SDL_SCANCODE_D = 7,
}
enum MY_Scancode
{
KEY_A,
KEY_B,
KEY_C,
KEY_D,
}
```
The two enums are not of equal length, so in the end I just
decided to create an immutable array of type My_Scancode[]
where the index is an SDL_Scancode and the value is the
corresponding MY_Scancode enum member. I'm ok with using some
memory for this, as long as it's as fast as possible.
If the only difference is the extra _UNKNOWN member, you can
still use the static foreach approach. Just make it a
non-template function and rip out the checks, and add a +1 in the
right place.