language: C++ 4.7.2 (gcc-4.7.2)
date: 460 days 17 hours ago
link:
visibility: public
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
namespace X
{
  template<typename T, unsigned int SIZE>
  bool IsArray (T (&a)[SIZE]) { return true; }
  
  template<typename T>
  bool IsArray (T *p) { return false; }
}
  
namespace Y
{
  typedef char (&yes)[2];
  
  template<typename T, unsigned int SIZE>
  yes IsArray (T (&a)[SIZE]);
  
  template<typename T>
  char IsArray (T *p);
}
 
using namespace X;
 
int main ()
{
  const char *s2 = "hello";
#if 1
  if(true == IsArray(s2))
    throw 0;
#else
  if(sizeof(IsArray(s2)) == sizeof(yes))
    throw 0;
#endif
}