UE, an aging c++ core?

Hi everyone, I am here today not to seek for help but to understand how the UE core evolves.

I have a c/c++ formation and had to do an end-of-study project. I decided to make a video game with UE.
My first approach of UE was with the BP, which is awesome to understand how the engine works, how the classes interact with each other, and the purpose of each class. Then I had a specific need (a SQL ORM). therefor I decided to make my own c++ plugin.

Thus, I had to discover how far UE replaced compiler’s features. First, I wanted to use an external library, I discovered to my costs that UE has it’s own RTTI system, and disable the compiler’s RTTI. I was sad because my library used dynamic casts… I had to make my library which uses the external library. Then I discovered that include guards are not understood by UE, we have to use the nonstandard #pragma. Then the Hungarian notation is considered as “wrong” and "ineffective"by many peoples (I am no one to judge, I probably not know enough on the coding conventions).

Then I understood that UE does not follow the latest c++ standard features of the compiles (for example auto is not authorized neither).

I tried to understand why, and everything is logic, because of the generation, because of the performances, because game development is very specific. But, it is very limiting not to be able to use the standard, and I think the engine was doing things is a very specific way before it was in the language, but now, is it still relevant?
As a team, we can’t follow our own coding convention in UE, so we have to have two. And then comes the compatibility problems,the coding problems. For people discovering c++ with Ue, it is more than enough, but I feel very frustrated using UE’s c++.

I just wanted to know what you think about that, and in what way UE is going to evolve, because the language evolves a lot! I can remember when GCC was rewritten in from c to c++, because of the evolution of the language and the needs of the GCC. Should the UE contributors and the team start to think about leaving some of the very specific stuff the standard didn’t provide back in the time but now does?

Just an open thought, thank you for your reading :slight_smile:

the core is old but well designed, and supports some modern c++11 features like auto for local variables, you just can’t use auto to type arguments to a function (which is a c++14 feature, and apparently not supported by clang). Moving your team to using #pragma once is a good thing, its supported by most tool chains.

The question is not only about auto and #pragma (#pragma once is not standard even if supported…). I am just wondering if some parts like the RTTI which is rewritten in UE, is still necessary. As well as the Hungarian notation which is extremmely intrusive. I am just discovering how “complicated” it is when it comes to use non-UE code, because of compatibility. I experienced that by the RTTI, but what is it about the rest of the engine?