brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · 21358f3 Raw
77 lines · cpp
1//===----------------------------------------------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9// UNSUPPORTED: c++0310 11// <set>12 13// class set14 15// iterator insert(const_iterator position, value_type&& v);16 17#include <set>18#include <cassert>19#include <iterator>20 21#include "test_macros.h"22#include "MoveOnly.h"23#include "min_allocator.h"24 25int main(int, char**) {26  {27    typedef std::set<MoveOnly> M;28    typedef M::iterator R;29    M m;30    R r = m.insert(m.cend(), M::value_type(2));31    assert(r == m.begin());32    assert(m.size() == 1);33    assert(*r == 2);34 35    r = m.insert(m.cend(), M::value_type(1));36    assert(r == m.begin());37    assert(m.size() == 2);38    assert(*r == 1);39 40    r = m.insert(m.cend(), M::value_type(3));41    assert(r == std::prev(m.end()));42    assert(m.size() == 3);43    assert(*r == 3);44 45    r = m.insert(m.cend(), M::value_type(3));46    assert(r == std::prev(m.end()));47    assert(m.size() == 3);48    assert(*r == 3);49  }50  {51    typedef std::set<MoveOnly, std::less<MoveOnly>, min_allocator<MoveOnly>> M;52    typedef M::iterator R;53    M m;54    R r = m.insert(m.cend(), M::value_type(2));55    assert(r == m.begin());56    assert(m.size() == 1);57    assert(*r == 2);58 59    r = m.insert(m.cend(), M::value_type(1));60    assert(r == m.begin());61    assert(m.size() == 2);62    assert(*r == 1);63 64    r = m.insert(m.cend(), M::value_type(3));65    assert(r == std::prev(m.end()));66    assert(m.size() == 3);67    assert(*r == 3);68 69    r = m.insert(m.cend(), M::value_type(3));70    assert(r == std::prev(m.end()));71    assert(m.size() == 3);72    assert(*r == 3);73  }74 75  return 0;76}77