template<typename T>
T add(T a, T b) {
return a + b;
}
// error deduced conflicting types for parameter 'T'
// ('double' and 'int')
auto r = add(2.1, 5);
// works, but not very nice
auto r = add<double>(2.1, 5);


St. Louise Meeting ahead (N4966)
Many papers, see
at least 4 papers from Swedish members
Monthly meetings continue
Paper-club continues
Finally!
We did it !!
operator .()
Promising paper available
Author will come to speak about it
St. Louise trip report end of August
🎉 8 years anniversary 🎉
Today!
Homepage: https://swedencpp.se
YouTube: https://www.youtube.com/@SwedenCpp
Mastodon: https://hachyderm.io/@SwedenCpp
Slack: https://swedencpp.slack.com
22nd August
End Sept/ begin October
late November
Submit your ideas and suggestions

Tell us what you want to hear or want to do


template<typename T>
T add(T a, T b) {
return a + b;
}
// error deduced conflicting types for parameter 'T'
// ('double' and 'int')
auto r = add(2.1, 5);
// works, but not very nice
auto r = add<double>(2.1, 5);
template<typename T>
T add(T a, T b) {
return a + b;
}
// This to just work
auto r = add(2.1, 5);
auto epsilon = std::numeric_limits<double>::epsilon();
assert(std::abs(r - 7.1) < epsilon);What is ????_??????????
template<typename T>
T add(T a, std::????_??????????<T> b) {
return a + b;
}
auto r = add(2.1, 5);
auto epsilon = std::numeric_limits<double>::epsilon();
assert(std::abs(r - 7.1) < epsilon);
template<typename T>
T add(T a, std::type_identity_t<T> b) {
return a + b;
}
auto r = add(2.1, 5);
auto epsilon = std::numeric_limits<double>::epsilon();
assert(std::abs(r - 7.1) < epsilon);
\$f(x) = x, \ \forall x \in X\$
or
\$\i\d_X\$
Not just for values but also for types
Arvid: 20 years of libtorrent 🎉
🍹 🍕 Mingle 🍕 🍻
Björn: Cache friendly data + functional + ranges = ❤️
Väl mött!