OpenCores
URL https://opencores.org/ocsvn/openrisc_me/openrisc_me/trunk

Subversion Repositories openrisc_me

[/] [openrisc/] [trunk/] [gnu-src/] [gcc-4.5.1/] [gcc/] [testsuite/] [g++.dg/] [template/] [sfinae6_neg.C] - Blame information for rev 328

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 301 jeremybenn
// DR 339
2
//
3
// Test of the use of the function call operator with SFINAE
4
typedef char yes_type;
5
struct no_type { char data[2]; };
6
 
7
template T create_a();
8
 
9
template struct type { };
10
 
11
template struct enable_if { typedef T type; };
12
template struct enable_if { };
13
 
14
template
15
  typename enable_if()(create_a(), create_a()), 1),
16
                     yes_type>::type
17
  check_is_callable2(type, type, type);
18
 
19
no_type check_is_callable2(...);
20
 
21
template
22
struct is_callable2
23
{
24
  static const bool value =
25
    (sizeof(check_is_callable2(type(), type(), type()))
26
     == sizeof(yes_type)); // { dg-error "within this context" }
27
};
28
 
29
#define JOIN( X, Y ) DO_JOIN( X, Y )
30
#define DO_JOIN( X, Y ) DO_JOIN2(X,Y)
31
#define DO_JOIN2( X, Y ) X##Y
32
 
33
#ifdef __GXX_EXPERIMENTAL_CXX0X__
34
#  define STATIC_ASSERT(Expr) static_assert(Expr, #Expr)
35
#else
36
#  define STATIC_ASSERT(Expr) int JOIN(a,__LINE__)[Expr? 1 : -1]
37
#endif
38
 
39
 
40
struct A;
41
struct B;
42
 
43
struct A {
44
  A(B);
45
};
46
 
47
struct B {
48
  B(A);
49
};
50
 
51
struct F {
52
  void operator()(A, A);
53
 
54
private:
55
  void operator()(B, B); // { dg-error "is private" }
56
};
57
 
58
STATIC_ASSERT((is_callable2::value));

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.