brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.6 KiB · 8b8d701 Raw
70 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++03, c++11, c++1410 11// <set>12 13// template<class InputIterator,14//          class Compare = less<iter-value-type<InputIterator>>,15//          class Allocator = allocator<iter-value-type<InputIterator>>>16// set(InputIterator, InputIterator,17//     Compare = Compare(), Allocator = Allocator())18//   -> set<iter-value-type<InputIterator>, Compare, Allocator>;19// template<class Key, class Compare = less<Key>,20//          class Allocator = allocator<Key>>21// set(initializer_list<Key>, Compare = Compare(), Allocator = Allocator())22//   -> set<Key, Compare, Allocator>;23// template<class InputIterator, class Allocator>24// set(InputIterator, InputIterator, Allocator)25//   -> set<iter-value-type<InputIterator>,26//          less<iter-value-type<InputIterator>>, Allocator>;27// template<class Key, class Allocator>28// set(initializer_list<Key>, Allocator)29//   -> set<Key, less<Key>, Allocator>;30 31#include <functional>32#include <set>33#include <type_traits>34 35struct NotAnAllocator {36  friend bool operator<(NotAnAllocator, NotAnAllocator) { return false; }37};38 39int main(int, char**) {40  {41    // cannot deduce Key from nothing42    std::set s;43    // expected-error-re@-1{{no viable constructor or deduction guide for deduction of template arguments of '{{(std::)?}}set'}}44  }45  {46    // cannot deduce Key from just (Compare)47    std::set s(std::less<int>{});48    // expected-error-re@-1{{no viable constructor or deduction guide for deduction of template arguments of '{{(std::)?}}set'}}49  }50  {51    // cannot deduce Key from just (Compare, Allocator)52    std::set s(std::less<int>{}, std::allocator<int>{});53    // expected-error-re@-1{{no viable constructor or deduction guide for deduction of template arguments of '{{(std::)?}}set'}}54  }55  {56    // cannot deduce Key from just (Allocator)57    std::set s(std::allocator<int>{});58    // expected-error-re@-1{{no viable constructor or deduction guide for deduction of template arguments of '{{(std::)?}}set'}}59  }60  {61    // since we have parens, not braces, this deliberately does not find the62    // initializer_list constructor63    NotAnAllocator a;64    std::set s(a);65    // expected-error-re@-1{{no viable constructor or deduction guide for deduction of template arguments of '{{(std::)?}}set'}}66  }67 68  return 0;69}70