| // { dg-options "-std=gnu++23" } |
| // { dg-do run { target c++20 } } |
| |
| #include <memory> |
| #include <testsuite_hooks.h> |
| |
| struct UsesAlloc |
| { |
| using allocator_type = std::allocator<int>; |
| |
| bool passed_alloc; |
| |
| UsesAlloc(int) : passed_alloc(false) { } |
| |
| UsesAlloc(int, std::allocator<int>) : passed_alloc(true) { } |
| }; |
| |
| using Pair = std::pair<UsesAlloc, int>; |
| |
| void |
| test_const() |
| { |
| std::allocator<int> a; |
| int i = 0; |
| auto p = std::make_obj_using_allocator<const Pair>(a, i, i); |
| VERIFY( p.first.passed_alloc ); |
| } |
| |
| void |
| test_volatile() |
| { |
| std::allocator<int> a; |
| int i = 0; |
| auto p = std::make_obj_using_allocator<volatile Pair>(a, i, i); |
| VERIFY( p.first.passed_alloc ); |
| } |
| |
| void |
| test_const_volatile() |
| { |
| std::allocator<int> a; |
| int i = 0; |
| auto p = std::make_obj_using_allocator<volatile Pair>(a, i, i); |
| VERIFY( p.first.passed_alloc ); |
| } |
| |
| int main() |
| { |
| test_const(); |
| test_volatile(); |
| test_const_volatile(); |
| } |