File: main.cpp

package info (click to toggle)
cbmc 4.9-4
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 40,588 kB
  • ctags: 19,198
  • sloc: cpp: 185,860; ansic: 16,162; yacc: 5,343; lex: 4,518; makefile: 954; pascal: 506; sh: 318; perl: 213; java: 206
file content (46 lines) | stat: -rw-r--r-- 648 bytes parent folder | download | duplicates (3)
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
35
36
37
38
39
40
41
42
43
44
45
46
struct A
{
	int i;
	A():i(1){}
	
	int& operator* () {return i;}
	int operator+ (int j){return i+j;}
	int operator~ (){return ~i;}
	int operator[] (int k){return i;}
	int operator== (int k){return i=i;}

	void func1()
	{
		A a;
		assert(*a == 1);
		assert(*a + 1 == 2);
		assert(~a == ~1);
		assert(a[2] == *a);
		assert(a == 1);
	}
	
	void func2()
	{
		A a;
		assert((*this) == 1);
		assert((*this) + 1 == 2);
		assert(~(*this) == ~1);
		assert((*this)[2] == *(*this));
		assert((*this) == 1);
	}
		
};


int main()
{
	A o;
	assert(*o == 1);
	assert(*o + 1 == 2);
	assert(~o == ~1);
	assert(o[2] == *o);
	assert(o == 1);

	o.func1();
	o.func2();
}