Skip to content

Instantly share code, notes, and snippets.

@eao197
Created April 13, 2023 04:49
Show Gist options
  • Save eao197/4a3c11ed8506303999d72bac88435767 to your computer and use it in GitHub Desktop.
Save eao197/4a3c11ed8506303999d72bac88435767 to your computer and use it in GitHub Desktop.
Пример, который на wandbox сломал компилятор clang-16.0.1 (на строчке с инициализацией initial внутри make)
#include <cstddef>
#include <iostream>
#include <memory>
#include <vector>
struct MyData {
std::vector<std::byte> m_data;
explicit MyData(std::vector<std::byte> data) : m_data{std::move(data)}
{}
};
using MyDataShptr = std::shared_ptr<const MyData>;
MyDataShptr make() {
std::vector<std::byte> initial{std::byte{0}, std::byte{1}};
return std::make_shared<const MyData>(std::move(initial));
}
void use_it(const MyDataShptr & data) {
for(const auto v : data->m_data)
if(std::byte{0} == v) std::cout << "0 found" << std::endl;
}
int main()
{
auto v = make();
use_it(v);
std::cout << "===" << std::endl;
use_it(make());
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment