xref: /llvm-project/libcxx/test/support/read_write.h (revision 480cd780d63fd9c658cc2f51d0c54416b8b1a5c3)
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