|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#pragma once |
|
|
|
namespace thrust |
|
{ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename... Z> |
|
struct test_predefined_friend_struct {}; |
|
|
|
|
|
|
|
|
|
template <typename Z> |
|
void test_predefined_friend_function(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T, typename U> |
|
class test_class |
|
{ |
|
public: |
|
template <typename Z> |
|
struct test_nested_struct {}; |
|
|
|
int test_member_variable = 0; |
|
|
|
[[deprecated]] static constexpr int test_member_constant = 42; |
|
|
|
template <typename X, typename Y> |
|
using test_type_alias = test_class<X, Y>; |
|
|
|
enum class test_enum_class { |
|
A = 15, |
|
B, |
|
C |
|
}; |
|
|
|
|
|
|
|
test_class() = default; |
|
|
|
|
|
|
|
__host__ __device__ constexpr |
|
test_class(int); |
|
|
|
|
|
|
|
|
|
__host__ __device__ constexpr |
|
int test_member_function() = 0; |
|
|
|
|
|
|
|
|
|
__host__ __device__ |
|
virtual int test_virtual_member_function() = 0; |
|
|
|
|
|
|
|
|
|
|
|
template <typename A = test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int>, |
|
typename B = test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int>, |
|
typename C = test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int>> |
|
test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int> |
|
test_parameter_overflow_member_function(test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int> a, |
|
test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int> b, |
|
test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int> c); |
|
|
|
template <typename Z> |
|
friend void test_friend_function() {} |
|
|
|
template <typename Z> |
|
friend void test_predefined_friend_function(); |
|
|
|
template <typename... Z> |
|
friend struct thrust::test_predefined_friend_struct; |
|
|
|
protected: |
|
|
|
template <typename Z> |
|
class test_protected_nested_class {}; |
|
|
|
|
|
|
|
|
|
__device__ |
|
auto test_protected_member_function(); |
|
}; |
|
|
|
|
|
|
|
|
|
class test_derived_class : test_class<int, double> |
|
{ |
|
template <typename Z> |
|
struct test_derived_nested_struct {}; |
|
|
|
double test_derived_member_variable = 3.14; |
|
|
|
typedef double test_typedef; |
|
|
|
|
|
|
|
|
|
__host__ __device__ constexpr |
|
double test_derived_member_function(int, int); |
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
template <typename T> |
|
void test_function(T const& a, test_class<T, T const>&& b); |
|
|
|
|
|
|
|
|
|
|
|
template <typename T = test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int>, |
|
typename U = test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int>, |
|
typename V = test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int> |
|
> |
|
test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int, int, int, int> |
|
test_parameter_overflow_function(test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int> t, |
|
test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int> u, |
|
test_predefined_friend_struct<int, int, int, int, int, int, int, int, int, int, int, int> v); |
|
|
|
|
|
|
|
|
|
enum class test_enum { |
|
X = 1, |
|
Y = X, |
|
Z = 2 |
|
}; |
|
|
|
|
|
|
|
|
|
using test_alias = test_class<int, double>; |
|
|
|
|
|
|
|
|
|
namespace test_namespace { |
|
|
|
inline constexpr int test_constant = 12; |
|
|
|
|
|
|
|
|
|
template <typename T, typename U> |
|
auto test_nested_function(T t, U u) noexcept(noexcept(t + u)) -> decltype(t + u) |
|
{ return t + u; } |
|
|
|
|
|
|
|
|
|
template <typename Z> |
|
struct test_struct |
|
{ |
|
test_struct& operator=(test_struct const&) = default; |
|
|
|
|
|
|
|
|
|
bool operator<(test_struct const& t); |
|
}; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define THRUST_TEST_MACRO(x, y) thrust::test_namespace::nested_function(x, y) |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|