simple-binary-encoding icon indicating copy to clipboard operation
simple-binary-encoding copied to clipboard

Typed enumerations for C++

Open manuka89 opened this issue 5 years ago • 6 comments

When generating enumerations for C++, is it possible to generate typed enumerations?

I mean to generate:

enum Color : uint8_t { BLUE = 0, GREEN = 1, ... }

instead of

enum Color { BLUE = (std::uint8_t)0, GREEN = (std::uint8_t)1, ... }

manuka89 avatar Jun 11 '19 15:06 manuka89

Sure. Send a PR and I will look at it.

tmontgomery avatar Jun 11 '19 15:06 tmontgomery

You mean PR=Pull Request?

manuka89 avatar Jun 11 '19 15:06 manuka89

Yes

tmontgomery avatar Jun 11 '19 15:06 tmontgomery

@tmontgomery Does this project require C++11 or higher? Because that is needed for enum classes.

If we do require C++11 or higher we could remove the SBE_NOEXCEPT and SBE_CONSTEXPR macro.

rigtorp avatar Aug 26 '19 11:08 rigtorp

Not all C++11 compilers are equal. Such as various older releases of Visual Studio (right after 11 started showing up) and gcc that don't fully support every piece of the standard.

So, while C++11 is suggested, we try to make it as optional as possible to have the broadest base.

tmontgomery avatar Aug 26 '19 15:08 tmontgomery

Sure, that's why it's better to target some common platforms (Ubuntu LTS, Centos, SUSE, whatever is common non-EOL VS) and run CI against them. I'm pretty sure all of them have compilers with enum class support.

Using enum class could improve type safety in the C++ API. It would also be a API breakage.Something to consider for the future.

I will create a separate issue for this.

rigtorp avatar Aug 26 '19 21:08 rigtorp