Menu

- Learn
- Documentation
  - Language Reference
  - Library Reference
  - Command-line Reference
  - Feature Overview
  - Articles
- Downloads
- Packages
- Community
  - Blog
  - Orgs using D
  - Twitter
  - Forums
  - IRC
  - Community Discord
  - Wiki
  - GitHub
  - Issues
  - Get involved
  - Contributors
  - Foundation
  - Security Team
  - Donate
  - Sponsors
- Resources
  - Tour
  - Books
  - Tutorials
  - Tools
  - Editors
  - IDEs
  - run.dlang.io
  - Visual D
  - Acknowledgments
  - D Style
  - Glossary
  - Sitemap

Search
Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

# core.internal.array.construction

This module contains compiler support for constructing dynamic arrays
License:
Distributed under the Boost Software License 1.0. (See accompanying file LICENSE)

Source core/internal/array/construction.d

@trusted Tarr `_d_arrayctor`(Tarr : T[], T)(return scope Tarr `to`, scope Tarr `from`, char* `makeWeaklyPure` = null);
  Does array initialization (not assignment) from another array of the same element type.
  Parameters:

  Tarr `to` | what array to initialize
  Tarr `from` | what data the array should be initialized with
  char* `makeWeaklyPure` | unused; its purpose is to prevent the function from becoming strongly pure and risk being optimised out

  Returns:
  The created and initialized array `to`
  Bugs:
  This function template was ported from a much older runtime hook that bypassed safety, purity, and throwabilty checks. To prevent breaking existing code, this function template is temporarily declared @trusted until the implementation can be brought up to modern D expectations.
  The third parameter is never used, but is necessary in order for the function be treated as weakly pure, instead of strongly pure. This is needed because constructions such as the one below can be ignored by the compiler if `_d_arrayctor` is believed to be pure, because purity would mean the call to `_d_arrayctor` has no effects (no side effects and the return value is ignored), despite it actually modifying the contents of a. const S[2] b; const S[2] a = b; // this would get lowered to d_arrayctor(a, b)
@trusted void `_d_arraysetctor`(Tarr : T[], T)(scope Tarr `p`, ref scope T `value`);
  Do construction of an array. ti[count] p = value;
  Parameters:

  Tarr `p` | what array to initialize
  T `value` | what data to construct the array with

  Bugs:
  This function template was ported from a much older runtime hook that bypassed safety, purity, and throwabilty checks. To prevent breaking existing code, this function template is temporarily declared @trusted until the implementation can be brought up to modern D expectations.

Copyright © 1999-2023 by the D Language Foundation | Page generated by Ddoc on Wed Mar 1 14:56:30 2023