MCPcopy Create free account
hub / github.com/Apress/beginning-cpp20 / main

Function main

Examples/Modules/Chapter 17/Ex17_03/Ex17_03.cpp:7–30  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5import <iostream>;
6
7int main()
8{
9 // Class Template Argument Deduction (CTAD) in action:
10 Array integers{ 1, 2, 3, 4, 5 }; // Deduced type: Array<int>
11 Array doubles{ 1.0, 2.0, 3.0, 4.0, 5.0 }; // Deduced type: Array<double
12
13 // But... caution!
14 {
15 const size_t numValues{ 50 };
16 Array<double> values{ numValues }; // Now uses the initializer list constructor!
17
18 std::cout << "Wrong constructor used, so " << values.getSize() << " != " << numValues << std::endl;
19 std::cout << "Single value contained in Array<> is " << values[0] << std::endl;
20 }
21
22 // Workaround: do not use uniform initialization (or "near uniform", as is thus more appropriate...)
23 {
24 const size_t numValues{ 50 };
25 Array<double> values(numValues); // Uses Array(size_t) constructor as before
26
27 std::cout << "Intended constructor used, so " << values.getSize() << " == " << numValues << std::endl;
28 std::cout << "All values are equal to " << values[numValues / 2] << std::endl;
29 }
30}

Callers

nothing calls this directly

Calls 1

getSizeMethod · 0.45

Tested by

no test coverage detected