// -*- C++ -*-
// Testing utilities for the tr1 testsuite.
//
-// Copyright (C) 2004-2015 Free Software Foundation, Inc.
+// Copyright (C) 2004-2022 Free Software Foundation, Inc.
//
// This file is part of the GNU ISO C++ Library. This library is free
// software; you can redistribute it and/or modify it under the
#define _GLIBCXX_TESTSUITE_TR1_H
#include <ext/type_traits.h>
+#include <testsuite_hooks.h>
namespace __gnu_test
{
&& Category<const volatile Type>::type::value == value);
}
- template<template<typename> class Property, typename Type>
-#if __cplusplus >= 201103L
- constexpr
-#endif
- bool
- test_property(typename Property<Type>::value_type value)
- {
- return (Property<Type>::value == value
- && Property<Type>::type::value == value);
- }
-
// For testing tr1/type_traits/extent, which has a second template
// parameter.
template<template<typename, unsigned> class Property,
return (Property<Type1, Types...>::value == value
&& Property<Type1, Types...>::type::value == value);
}
+#else
+ template<template<typename> class Property, typename Type>
+ bool
+ test_property(typename Property<Type>::value_type value)
+ {
+ return (Property<Type>::value == value
+ && Property<Type>::type::value == value);
+ }
#endif
template<template<typename, typename> class Relationship,
union UnionType { };
+ union IncompleteUnion;
+
class IncompleteClass;
struct ExplicitClass
struct ThrowExplicitClass
{
- ThrowExplicitClass(double&) throw(int);
- explicit ThrowExplicitClass(int&) throw(int);
- ThrowExplicitClass(double&, int&, double&) throw(int);
+ ThrowExplicitClass(double&) THROW(int);
+ explicit ThrowExplicitClass(int&) THROW(int);
+ ThrowExplicitClass(double&, int&, double&) THROW(int);
};
struct ThrowDefaultClass
{
- ThrowDefaultClass() throw(int);
+ ThrowDefaultClass() THROW(int);
};
struct ThrowCopyConsClass
{
- ThrowCopyConsClass(const ThrowCopyConsClass&) throw(int);
+ ThrowCopyConsClass(const ThrowCopyConsClass&) THROW(int);
};
#if __cplusplus >= 201103L
struct ThrowMoveConsClass
{
- ThrowMoveConsClass(ThrowMoveConsClass&&) throw(int);
+ ThrowMoveConsClass(ThrowMoveConsClass&&) noexcept(false);
};
struct NoexceptExplicitClass
{
struct E
{};
-
+
struct NTD1
{
~NTD1() = default;
};
-
+
struct NTD2
{
~NTD2();
};
-
+
struct NTD3
{
~NTD3() throw();
};
-
+
struct TD1
{
~TD1() noexcept(false);
};
-
+
struct TD2
{
- ~TD2() throw(int);
+ ~TD2() THROW(int);
};
-
+
struct Aggr
{
int i;
bool b;
E e;
};
-
+
struct Aggr2
{
int i;
bool b;
TD1 r;
};
-
+
struct Del
{
~Del() = delete;
};
-
+
struct Del2
{
~Del2() noexcept = delete;
};
-
+
struct Del3
{
~Del3() noexcept(false) = delete;
};
-
+
struct Der : Aggr
{};
-
+
struct Der2 : Aggr2
{};
-
+
union U1
{
int i;
void* p;
TD1* pt;
};
-
+
union Ut
{
int i;
void* p;
TD1 pt;
};
-
+
enum class En { a, b, c, d };
enum En2 { En2a, En2b, En2c, En2d };
{
virtual ~Abstract1() = 0;
};
-
+
struct AbstractDelDtor
{
~AbstractDelDtor() = delete;
{
virtual ~Abstract2() noexcept(false) = 0;
};
-
+
struct Abstract3
{
~Abstract3() noexcept(false);
DelCopy(const DelCopy&) = delete;
};
}
-
+
namespace assign
{
struct Empty {};