The Aburiscript compiler is actively developing C++ support. It currently understands a substantial subset of C++ concepts, specifically targeting the Itanium ABI.
- Classes and Structs:
classandstructdefinitions, access control (public,private,protected). - Member Functions: Methods (with implicit
thispointer), static member functions, and static data members. - Lifecycle: Constructors (including initializer lists) and Destructors (
~Class()). - Dynamic Allocation: Global and class-specific
new,new[],delete, anddelete[]operators.
- Single and Multiple Inheritance: Support for base classes and virtual bases.
- Virtual Methods: Dynamic dispatch via virtual method tables (V-Tables).
- RTTI (Run-Time Type Information):
typeidfor static and dynamic queries.dynamic_castfor safe pointer and reference downcasting/cross-casting.
- Member Pointers: Pointers to data members and member functions (
.*,->*).
- Try/Catch Blocks:
try { ... } catch (Type obj) { ... }including catch-allcatch (...). - Throw Expressions: Throwing objects and re-throwing (
throw;). - Noexcept:
noexceptspecifiers and predicates (noexcept(expr)). - Teardown: Automatic stack unwinding and destructor invocation upon exceptions.
- Templates: The templating engine is present but still expanding in coverage (partial instantiation, SFINAE, etc.).
- Operator Overloading: Coverage is still limited.
- RTTI Surface Model:
typeidcurrently exposes a compiler-owned RTTI surface type rather thanstd::type_info, because standard library headers are not parsed yet. - Standard Library: Standard library integration (like
<iostream>,<vector>) is non-existent while the language feature set continues to expand.