[SAoC] Move semantics and STL containers

Suleyman sahmi.soulaimane at gmail.com
Sat Sep 21 19:44:41 UTC 2019


I will be working in this SAoC season on the D bindings to simple 
STL containers project[1].

This thread will be updated weekly with progress status.

The theme of this SAoC project is to improve and consolidate D's 
interoperability through bindings to the C++ STL containers. This 
will involve fixing a number of DMD issues related to C++ 
interop, as well as implementing the move constructor in D.


* 1. Full implementation of rvalue ref.
  - `@rvalue ref` as attribute
  - __traits(isRvalueRef)
  - `__rvalue(T)` as type constructor
  - implement full semantics
  - expand `auto ref` to rvale ref
  - match the C++ mangling for rvalue ref

* 2. Full implementation of the move constructor
  - move constructor
  - move opAssign
  - implement full semantics:
    - default behaviour
    - `@disable`
    - relationship with the copy constructor
    - conflict with existing semantics

* 3. Fix blocking DMD issues and implement std::string and 
std::vector on all platforms
  - Fix issue https://issues.dlang.org/show_bug.cgi?id=20235
  - Investigate and fix the mangling issue which is blocking 
  - implement move semantics for std::string
  - implement std::vector for GCC and Clang lib

* 4. Finalize the project
  - Ensure move semantics work properly
  - ensure backwards compatibility
  - implement existing STL containers on all platforms
  - resolve all D blockers


[1] https://github.com/dlang-cpp-interop/stl-containers/

More information about the Digitalmars-d mailing list