//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This test ensures that we don't use a non-uglified name 'base', 'iterator', // 'const_iterator', and `const_reference` in the implementation of bitset. // // See https://llvm.org/PR111125. // See https://llvm.org/PR121618. #include #include #include struct my_base { typedef int* iterator; typedef const int* const_iterator; typedef my_base base; typedef const int& const_reference; typedef std::ptrdiff_t difference_type; typedef std::size_t size_type; }; template struct my_derived : my_base, std::bitset {}; static_assert(std::is_same::iterator, int*>::value, ""); static_assert(std::is_same::iterator, int*>::value, ""); static_assert(std::is_same::iterator, int*>::value, ""); static_assert(std::is_same::iterator, int*>::value, ""); static_assert(std::is_same::iterator, int*>::value, ""); static_assert(std::is_same::iterator, int*>::value, ""); static_assert(std::is_same::iterator, int*>::value, ""); static_assert(std::is_same::iterator, int*>::value, ""); static_assert(std::is_same::iterator, int*>::value, ""); static_assert(std::is_same::const_iterator, const int*>::value, ""); static_assert(std::is_same::const_iterator, const int*>::value, ""); static_assert(std::is_same::const_iterator, const int*>::value, ""); static_assert(std::is_same::const_iterator, const int*>::value, ""); static_assert(std::is_same::const_iterator, const int*>::value, ""); static_assert(std::is_same::const_iterator, const int*>::value, ""); static_assert(std::is_same::const_iterator, const int*>::value, ""); static_assert(std::is_same::const_iterator, const int*>::value, ""); static_assert(std::is_same::const_iterator, const int*>::value, ""); static_assert(std::is_same::base, my_base>::value, ""); static_assert(std::is_same::base, my_base>::value, ""); static_assert(std::is_same::base, my_base>::value, ""); static_assert(std::is_same::base, my_base>::value, ""); static_assert(std::is_same::base, my_base>::value, ""); static_assert(std::is_same::base, my_base>::value, ""); static_assert(std::is_same::base, my_base>::value, ""); static_assert(std::is_same::base, my_base>::value, ""); static_assert(std::is_same::base, my_base>::value, ""); static_assert(std::is_same::const_reference, const int&>::value, ""); static_assert(std::is_same::const_reference, const int&>::value, ""); static_assert(std::is_same::const_reference, const int&>::value, ""); static_assert(std::is_same::const_reference, const int&>::value, ""); static_assert(std::is_same::const_reference, const int&>::value, ""); static_assert(std::is_same::const_reference, const int&>::value, ""); static_assert(std::is_same::const_reference, const int&>::value, ""); static_assert(std::is_same::const_reference, const int&>::value, ""); static_assert(std::is_same::const_reference, const int&>::value, ""); static_assert(std::is_same::difference_type, std::ptrdiff_t>::value, ""); static_assert(std::is_same::difference_type, std::ptrdiff_t>::value, ""); static_assert(std::is_same::difference_type, std::ptrdiff_t>::value, ""); static_assert(std::is_same::difference_type, std::ptrdiff_t>::value, ""); static_assert(std::is_same::difference_type, std::ptrdiff_t>::value, ""); static_assert(std::is_same::difference_type, std::ptrdiff_t>::value, ""); static_assert(std::is_same::difference_type, std::ptrdiff_t>::value, ""); static_assert(std::is_same::difference_type, std::ptrdiff_t>::value, ""); static_assert(std::is_same::difference_type, std::ptrdiff_t>::value, ""); static_assert(std::is_same::size_type, std::size_t>::value, ""); static_assert(std::is_same::size_type, std::size_t>::value, ""); static_assert(std::is_same::size_type, std::size_t>::value, ""); static_assert(std::is_same::size_type, std::size_t>::value, ""); static_assert(std::is_same::size_type, std::size_t>::value, ""); static_assert(std::is_same::size_type, std::size_t>::value, ""); static_assert(std::is_same::size_type, std::size_t>::value, ""); static_assert(std::is_same::size_type, std::size_t>::value, ""); static_assert(std::is_same::size_type, std::size_t>::value, "");