blob: 649b98d3922ba9c9f126ec061d9fe2bc53612a52 [file] [log] [blame]
// { 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();
}