File: utility.d

package info (click to toggle)
gcc-arm-none-eabi 15%3A12.2.rel1-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 959,712 kB
  • sloc: cpp: 3,275,382; ansic: 2,061,766; ada: 840,956; f90: 208,513; makefile: 76,132; asm: 73,433; xml: 50,448; exp: 34,146; sh: 32,436; objc: 15,637; fortran: 14,012; python: 11,991; pascal: 6,787; awk: 4,779; perl: 3,054; yacc: 338; ml: 285; lex: 201; haskell: 122
file content (50 lines) | stat: -rw-r--r-- 1,076 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
/**
 * D header file for interaction with Microsoft C++ <utility>
 *
 * Copyright: Copyright (c) 2018 D Language Foundation
 * License: Distributed under the
 *      $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0).
 *    (See accompanying file LICENSE)
 * Authors:   Manu Evans
 * Source:    $(DRUNTIMESRC core/stdcpp/utility.d)
 */

module core.stdcpp.utility;

import core.stdcpp.xutility : StdNamespace;

extern(C++, (StdNamespace)):
@nogc:

/**
* D language counterpart to C++ std::pair.
*
* C++ reference: $(LINK2 https://en.cppreference.com/w/cpp/utility/pair)
*/
struct pair(T1, T2)
{
    ///
    alias first_type = T1;
    ///
    alias second_type = T2;

    ///
    T1 first;
    ///
    T2 second;

    // FreeBSD has pair as non-POD so add a contructor
    version (FreeBSD)
    {
        this(T1 t1, T2 t2) inout
        {
            first  = t1;
            second = t2;
        }
        this(ref return scope inout pair!(T1, T2) src) inout
        {
            first  = src.first;
            second = src.second;
        }
    }
}