The semels form a semantic grammar.
For which language?
Let's call it "Semel C++".
What is the relationship between Standard C++ and Semel C++?
Are they identical?
Almost.
Any program which is legal in Standard C++ can be constructed in Semel C++, except for the following:
In Standard C++, a #define symbol can be used anywhere a token can appear.
In Semel C++, a #define symbol can be used anywhere an expression, a statement, or a type can appear.
Here are some other differences:
In Standard C++, the outermost scope is a scope with no name.
In Semel C++, the outermost scope is a namespace with the name "The Outermost Scope".
In Standard C++, a function is either a class member or a non-member.
In Semel C++, a function is either a class member or a namespace member.
In Standard C++, a literal's type is determined by its form, value, and suffix.
In Semel C++, a literal's type determines its form, value, and suffix.
In Standard C++, an enum's underlying type is optional, and is determined by the types of the enum's literal values.
In Semel C++, an enum's underlying type is mandatory, and determines the types of the enum's literal values.
In Standard C++, the overload of a function is determined by the number and types of the actual parameters.
In Semel C++, the overload of a function determines the number and types of the actual parameters.
The last 3 comparisons illustrate one of the most important differences between Standard C++ and Semel C++:
In Standard C++, first you write text, then the compiler figures out what you want.
In Semel C++, first you decide what you want, then The Semel Editor (TM) codifies it to end up with text.
Semel C++ gives programmers the chance to think in terms of semantics (i.e. the semels), then codify the semels into C++, without the need to think about syntax.
Non-standard extensions
Semel C++ contains the following semels which might make your life easier: