157ebf3d0SLouis Dionne //===----------------------------------------------------------------------===// 257ebf3d0SLouis Dionne // 357ebf3d0SLouis Dionne // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 457ebf3d0SLouis Dionne // See https://llvm.org/LICENSE.txt for license information. 557ebf3d0SLouis Dionne // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 657ebf3d0SLouis Dionne // 757ebf3d0SLouis Dionne //===----------------------------------------------------------------------===// 8*480cd780SLouis Dionne 957ebf3d0SLouis Dionne #ifndef LIBCPP_TEST_SUPPORT_READ_WRITE_H 1057ebf3d0SLouis Dionne #define LIBCPP_TEST_SUPPORT_READ_WRITE_H 1157ebf3d0SLouis Dionne 1257ebf3d0SLouis Dionne struct value_type_indirection { 1357ebf3d0SLouis Dionne using value_type = int; 1457ebf3d0SLouis Dionne value_type& operator*() const; 1557ebf3d0SLouis Dionne }; 1657ebf3d0SLouis Dionne 1757ebf3d0SLouis Dionne struct element_type_indirection { 1857ebf3d0SLouis Dionne using element_type = long; 1957ebf3d0SLouis Dionne element_type& operator*() const; 2057ebf3d0SLouis Dionne }; 2157ebf3d0SLouis Dionne 2257ebf3d0SLouis Dionne struct proxy_indirection { 2357ebf3d0SLouis Dionne using value_type = int; 2457ebf3d0SLouis Dionne value_type operator*() const; 2557ebf3d0SLouis Dionne }; 2657ebf3d0SLouis Dionne 2757ebf3d0SLouis Dionne struct read_only_indirection { 2857ebf3d0SLouis Dionne using value_type = int const; 2957ebf3d0SLouis Dionne value_type& operator*() const; 3057ebf3d0SLouis Dionne }; 3157ebf3d0SLouis Dionne 3257ebf3d0SLouis Dionne // doubles as missing_iter_reference_t 3357ebf3d0SLouis Dionne struct missing_dereference { 3457ebf3d0SLouis Dionne using value_type = int; 3557ebf3d0SLouis Dionne }; 3657ebf3d0SLouis Dionne 3757ebf3d0SLouis Dionne #endif // LIBCPP_TEST_SUPPORT_READ_WRITE_H 38