From 2152fd7682e3725449fc6483141dc55fc80dad16 Mon Sep 17 00:00:00 2001 From: Eric Fiselier Date: Mon, 18 Apr 2016 06:17:30 +0000 Subject: Implement LWG issue 2219 - support reference_wrapper in INVOKE llvm-svn: 266590 --- .../function.objects/func.require/invoke_helpers.h | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'libcxx/test/std/utilities/function.objects/func.require/invoke_helpers.h') diff --git a/libcxx/test/std/utilities/function.objects/func.require/invoke_helpers.h b/libcxx/test/std/utilities/function.objects/func.require/invoke_helpers.h index a85b39f3717..495703d0e32 100644 --- a/libcxx/test/std/utilities/function.objects/func.require/invoke_helpers.h +++ b/libcxx/test/std/utilities/function.objects/func.require/invoke_helpers.h @@ -79,6 +79,40 @@ typedef Caster MoveConstCaster; typedef Caster MoveVolatileCaster; typedef Caster MoveCVCaster; + +template +Tp const& makeConst(Tp& ref) { return ref; } + +template +Tp const* makeConst(Tp* ptr) { return ptr; } + +template +std::reference_wrapper makeConst(std::reference_wrapper& ref) { + return std::reference_wrapper(ref.get()); +} + +template +Tp volatile& makeVolatile(Tp& ref) { return ref; } + +template +Tp volatile* makeVolatile(Tp* ptr) { return ptr; } + +template +std::reference_wrapper makeVolatile(std::reference_wrapper& ref) { + return std::reference_wrapper(ref.get()); +} + +template +Tp const volatile& makeCV(Tp& ref) { return ref; } + +template +Tp const volatile* makeCV(Tp* ptr) { return ptr; } + +template +std::reference_wrapper makeCV(std::reference_wrapper& ref) { + return std::reference_wrapper(ref.get()); +} + // A shorter name for 'static_cast' template QualType C_(Tp& v) { return static_cast(v); }; -- cgit v1.2.3