CPP Quiz

fmorgner 610 views 28 slides Feb 24, 2016
Slide 1
Slide 1 of 28
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28

About This Presentation

A quiz about C++ quirkiness and subtle syntatic constructs to raise awareness for the things that can go wrong.


Slide Content

Updates
C++Quiz
Felix Morgner
Computer Science
Hochschule f¨ur Technik Rapperswil
February 24, 2016

Updates

Updates

Updates
What we will see
Quirky stuff
Undened Behavior
Unspecied things

Updates
Scoring
+1 per correct answer
+1 per correct reason
-1 per wrong answers

Updates
#include
struct
int
int
};
int
S o{};
std::cout << o.memfun();
std::cout << S{}.memfun();
}

Updates
#include
struct
virtual;
float
float
};
struct
float
};
int
//:(float)
//:(void *)
std::cout <<(B) <<\n';
std::cout <<(D) <<\n';
}

Updates
#include
struct
int
std::cout <<(S) <<\n';
}

Updates
#include
autounsigned
(***(int* * *)n)++;
}
int
int
auto
auto
autounsigned) &p2;
f(p3);
std::cout << (**(int* * *)p3 == &n) <<;
std::cout <<*p1 <<\n';
}

Updates
#include
int
char'c'};
char*ptr1;
char * *ptr2{&ptr1};
*ptr2 = &c;
(*ptr1)++;
std::cout << c <<\n';
}

Updates
#include
int
{
https://github.com/fmorgner/cppquiz
std::cout <<cppugzh\n";
}

Updates
#include
struct
S() { std::cout <<c"; }
~S() { std::cout <<d"; }
};
int
int
mark:
S s{};
while(!i++) {
goto
}
}

Updates
#include
#include
#include
using
int
int
[=]{
cout << std::is_same<decltype( j ),
<< std::is_same<decltype((j)),
<< std::is_same<int
}();
}

Updates
#include
struct
A() =;
A(AA\n"; }
};
struct
B() =;
B(BB\n"; }
};
auto
int
A a{};
B b{};
[=]{
std::cout <<(a) <<\n';
f(b);
}();
}

Updates
#include
struct
template<typename
E(Types
};
template<typename
auto
E{(std::cout << args)..., std::cout <<\n'};
}
int
using
println("C",+',+"s,RocksMySocks");
}

Updates
#include
template<typename
auto
template<typename
auto
call((std::cout << args)..., std::cout <<\n');
}
int
using
println("C",+',+"s,RocksMySocks");
}

Updates
#include
#include
#include
int
autocppug";
std::vector<std::string> v{a, a, a};
for(auto
std::cout << s;
}
std::cout <<\n'\n';
}

Updates
#include
#include
#include
int
autocppug";
std::vector<std::string> v{{a, a, a}};
for(auto
std::cout << s;
}
std::cout <<\n'\n';
}

Updates
#include
#include
#include
int
autocppug";
std::vector<std::string> v{{a, a}};
for(auto
std::cout << s;
}
std::cout <<\n'\n';
}

Updates
#include
voidlong) {
std::cout << 1 <<\n';
}
voidfloat) {
std::cout << 2 <<\n';
}
int
f(4);
}

Updates
#include
voidint,,,);
voidint,,,
voidint,,);
voidint,,);
voidint,,);
voidint
std::cout << a << b << c << d <<\n';
}
int
f();
}

Updates
#include
template<typename
void
std::cout << 1;
}
template<typename
void
o(a);
}
voidfloat) {
std::cout << 2;
}
int
f(1.0f);
}

Updates
#include
int
auto
x = 42;
std::cout << x;
}

Updates
int

Updates
int
<:=??)??<
??(&:><%
??(]<%??>();
%>();
}();
%>

Updates
int
[=]{
[&]{
[]{}();
}();
}();
}

Updates
Thanks
https://www.youtube.com/watch?v=rNNnPrMHsAA - Piotr
Padlewski - C++ WAT
http://cppquiz.org/- C++ Quiz
http://olvemaudal.com/ - Olve Maudal
ISO14882:2014

Updates
Code and Slides
https://github.com/fmorgner/cpp-quiz
http://www.slideshare.net/fmorgner/cpp-quiz