Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Typed enumerations for C++ #690

Open
manuka89 opened this issue Jun 11, 2019 · 6 comments
Open

Typed enumerations for C++ #690

manuka89 opened this issue Jun 11, 2019 · 6 comments

Comments

@manuka89
Copy link

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,
...
}

@tmontgomery
Copy link
Contributor

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

@manuka89
Copy link
Author

You mean PR=Pull Request?

@tmontgomery
Copy link
Contributor

Yes

@rigtorp
Copy link
Contributor

rigtorp commented Aug 26, 2019

@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.

@tmontgomery
Copy link
Contributor

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.

@rigtorp
Copy link
Contributor

rigtorp commented Aug 26, 2019

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants