Skip to content

Commit adcb68d

Browse files
authored
Update 011_memory_ranges_uninitialized_copy_n.cpp
1 parent 9003fad commit adcb68d

1 file changed

Lines changed: 30 additions & 1 deletion

File tree

Lines changed: 30 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,30 @@
1-
1
1+
#include <iomanip>
2+
#include <iostream>
3+
#include <memory>
4+
#include <string>
5+
6+
int main()
7+
{
8+
const char* stars[] { "Procyon", "Spica", "Pollux", "Deneb", "Polaris", };
9+
10+
constexpr int n {4};
11+
alignas(alignof(std::string)) char out[n * sizeof(std::string)];
12+
13+
try
14+
{
15+
auto first {reinterpret_cast<std::string*>(out)};
16+
auto last {first + n};
17+
auto ret {std::ranges::uninitialized_copy_n(std::begin(stars), n, first, last)};
18+
19+
std::cout << "{ ";
20+
for (auto it {first}; it != ret.out; ++it)
21+
std::cout << std::quoted(*it) << ", ";
22+
std::cout << "};\n";
23+
24+
std::ranges::destroy(first, last);
25+
}
26+
catch(...)
27+
{
28+
std::cout << "uninitialized_copy_n exception\n";
29+
}
30+
}

0 commit comments

Comments
 (0)