Стандартный способ создать набор констант со значением как объединение / пересечение двух наборов в C ++? - PullRequest
0 голосов
/ 24 января 2020

Предположим, у меня есть

constexpr std::set<int> a = {1, 2, 3};
constexpr std::set<int> b = {3, 4, 5};

И я хочу создать

constexpr std::set<int> c = union(a, b); // {1, 2, 3, 4, 5}

Есть ли библиотечная функция для этого без создания моей собственной функции объединения / пересечения?

1 Ответ

2 голосов
/ 24 января 2020

Вы можете использовать лямбда-трюк для инициализации переменной const:

// need to capture `a`, `b` if this is at block scope
const std::set<int> c = []() {
    std::set<int> result;
    std::set_union(a.begin(), a.end(), b.begin(), b.end(), std::inserter(result, result.end()));
    return result;  // compiler can probably NRVO this
}();
...