An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström [email protected]...
Transcript of An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström [email protected]...
![Page 1: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/1.jpg)
An Oddysey in C++A Guided Tour of Modern C++
Per Karlströ[email protected]
Upplysningen 2010-03-02
Background Templates STL Boost C++0x More Reading Q&A
![Page 2: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/2.jpg)
From C to C++
Bjarne StroustrupFather of C++
1979: Development starts1998: ISO/IEC 14882:19982003: ISO/IEC 14882:20032005: TR1
Background Templates STL Boost C++0x More Reading Q&A
![Page 3: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/3.jpg)
From C to C++
Bjarne StroustrupFather of C++
1979: Development starts1998: ISO/IEC 14882:19982003: ISO/IEC 14882:20032005: TR1
Background Templates STL Boost C++0x More Reading Q&A
![Page 4: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/4.jpg)
From C to C++
Bjarne StroustrupFather of C++
1979: Development starts1998: ISO/IEC 14882:19982003: ISO/IEC 14882:20032005: TR1
Background Templates STL Boost C++0x More Reading Q&A
![Page 5: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/5.jpg)
From C to C++
Bjarne StroustrupFather of C++
1979: Development starts1998: ISO/IEC 14882:19982003: ISO/IEC 14882:20032005: TR1
Background Templates STL Boost C++0x More Reading Q&A
![Page 6: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/6.jpg)
From C to C++
Bjarne StroustrupFather of C++
1979: Development starts1998: ISO/IEC 14882:19982003: ISO/IEC 14882:20032005: TR1
Background Templates STL Boost C++0x More Reading Q&A
![Page 7: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/7.jpg)
Current State of C++
http://langpop.com/
Background Templates STL Boost C++0x More Reading Q&A
![Page 8: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/8.jpg)
Hello Template World
template<typename T>...
Background Templates STL Boost C++0x More Reading Q&A
![Page 9: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/9.jpg)
Complex Numbers
class Complex{float re,im;
public:...const float& re() const;const float& im() const;
};
Background Templates STL Boost C++0x More Reading Q&A
![Page 10: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/10.jpg)
Complex Template Numbers
template<typename T>class Complex{T re,im;
public:...const T& re() const;const T& im() const;
};
Background Templates STL Boost C++0x More Reading Q&A
![Page 11: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/11.jpg)
Advanced Template Techniques
Template specializationTemplate template argumentsSFINAE
Background Templates STL Boost C++0x More Reading Q&A
![Page 12: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/12.jpg)
Advanced Template Techniques
Template specializationTemplate template argumentsSFINAE
Background Templates STL Boost C++0x More Reading Q&A
![Page 13: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/13.jpg)
Advanced Template Techniques
Template specializationTemplate template argumentsSFINAE
Background Templates STL Boost C++0x More Reading Q&A
![Page 14: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/14.jpg)
Standard Template Library (STL)
ContainersIteratorsAlgorithmsFunctors
Background Templates STL Boost C++0x More Reading Q&A
![Page 15: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/15.jpg)
Standard Template Library (STL)
ContainersIteratorsAlgorithmsFunctors
Background Templates STL Boost C++0x More Reading Q&A
![Page 16: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/16.jpg)
Standard Template Library (STL)
ContainersIteratorsAlgorithmsFunctors
Background Templates STL Boost C++0x More Reading Q&A
![Page 17: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/17.jpg)
Standard Template Library (STL)
ContainersIteratorsAlgorithmsFunctors
Background Templates STL Boost C++0x More Reading Q&A
![Page 18: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/18.jpg)
Containers
[1]
Background Templates STL Boost C++0x More Reading Q&A
![Page 19: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/19.jpg)
List
Background Templates STL Boost C++0x More Reading Q&A
![Page 20: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/20.jpg)
Vector
Background Templates STL Boost C++0x More Reading Q&A
![Page 21: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/21.jpg)
Map
Background Templates STL Boost C++0x More Reading Q&A
![Page 22: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/22.jpg)
String
#include <string>...std::string better_than_charp("hello string");
typedef std::basic_string<char> string;
Background Templates STL Boost C++0x More Reading Q&A
![Page 23: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/23.jpg)
String
#include <string>...std::string better_than_charp("hello string");
typedef std::basic_string<char> string;
Background Templates STL Boost C++0x More Reading Q&A
![Page 24: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/24.jpg)
Other Containers
DequeStackQueueMultimapSet, Multiset
Background Templates STL Boost C++0x More Reading Q&A
![Page 25: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/25.jpg)
Iterators
Different types of IteratorsTrivialInputOutputForwardBidirectionalRandom Access
Background Templates STL Boost C++0x More Reading Q&A
![Page 26: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/26.jpg)
Iterators
Different types of IteratorsTrivialInputOutputForwardBidirectionalRandom Access
Background Templates STL Boost C++0x More Reading Q&A
![Page 27: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/27.jpg)
Iterators
Different types of IteratorsTrivialInputOutputForwardBidirectionalRandom Access
Background Templates STL Boost C++0x More Reading Q&A
![Page 28: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/28.jpg)
Iterators
Different types of IteratorsTrivialInputOutputForwardBidirectionalRandom Access
Background Templates STL Boost C++0x More Reading Q&A
![Page 29: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/29.jpg)
Iterators
Different types of IteratorsTrivialInputOutputForwardBidirectionalRandom Access
Background Templates STL Boost C++0x More Reading Q&A
![Page 30: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/30.jpg)
Iterators
Different types of IteratorsTrivialInputOutputForwardBidirectionalRandom Access
Background Templates STL Boost C++0x More Reading Q&A
![Page 31: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/31.jpg)
Algorithms for STL Containers
Non mutatingFor eachFind...
MutatingCopyTransform...
SortingSortBinary searchHeap operations...
Numeric
Background Templates STL Boost C++0x More Reading Q&A
![Page 32: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/32.jpg)
Algorithms for STL Containers
Non mutatingFor eachFind...
MutatingCopyTransform...
SortingSortBinary searchHeap operations...
Numeric
Background Templates STL Boost C++0x More Reading Q&A
![Page 33: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/33.jpg)
Algorithms for STL Containers
Non mutatingFor eachFind...
MutatingCopyTransform...
SortingSortBinary searchHeap operations...
Numeric
Background Templates STL Boost C++0x More Reading Q&A
![Page 34: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/34.jpg)
Algorithms for STL Containers
Non mutatingFor eachFind...
MutatingCopyTransform...
SortingSortBinary searchHeap operations...
Numeric
Background Templates STL Boost C++0x More Reading Q&A
![Page 35: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/35.jpg)
For each
ExampleSTL for each...
Background Templates STL Boost C++0x More Reading Q&A
![Page 36: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/36.jpg)
For each
ExampleSTL for each...
Background Templates STL Boost C++0x More Reading Q&A
![Page 37: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/37.jpg)
Copy
ExampleSTL copy...
Background Templates STL Boost C++0x More Reading Q&A
![Page 38: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/38.jpg)
Copy
ExampleSTL copy...
Background Templates STL Boost C++0x More Reading Q&A
![Page 39: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/39.jpg)
Transform
ExampleSTL transform...
Background Templates STL Boost C++0x More Reading Q&A
![Page 40: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/40.jpg)
Transform
ExampleSTL transform...
Background Templates STL Boost C++0x More Reading Q&A
![Page 41: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/41.jpg)
Sort
ExampleSTL sort...
Background Templates STL Boost C++0x More Reading Q&A
![Page 42: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/42.jpg)
Sort
ExampleSTL sort...
Background Templates STL Boost C++0x More Reading Q&A
![Page 43: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/43.jpg)
Boost
“...one of the most highly regarded and expertly designed C++library projects in the world.”— —Herb Sutter and Andrei Alexandrescu, C++ CodingStandards
Initial proposal 1998 by Beman G. Daves16 804 806 LOC5293 Person Years$291 133 309
Background Templates STL Boost C++0x More Reading Q&A
![Page 44: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/44.jpg)
Boost
“...one of the most highly regarded and expertly designed C++library projects in the world.”— —Herb Sutter and Andrei Alexandrescu, C++ CodingStandards
Initial proposal 1998 by Beman G. Daves16 804 806 LOC5293 Person Years$291 133 309
Background Templates STL Boost C++0x More Reading Q&A
![Page 45: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/45.jpg)
Boost
“...one of the most highly regarded and expertly designed C++library projects in the world.”— —Herb Sutter and Andrei Alexandrescu, C++ CodingStandards
Initial proposal 1998 by Beman G. Daves16 804 806 LOC5293 Person Years$291 133 309
Background Templates STL Boost C++0x More Reading Q&A
![Page 46: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/46.jpg)
Boost
“...one of the most highly regarded and expertly designed C++library projects in the world.”— —Herb Sutter and Andrei Alexandrescu, C++ CodingStandards
Initial proposal 1998 by Beman G. Daves16 804 806 LOC5293 Person Years$291 133 309
Background Templates STL Boost C++0x More Reading Q&A
![Page 47: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/47.jpg)
Boost
“...one of the most highly regarded and expertly designed C++library projects in the world.”— —Herb Sutter and Andrei Alexandrescu, C++ CodingStandards
Initial proposal 1998 by Beman G. Daves16 804 806 LOC5293 Person Years$291 133 309
Background Templates STL Boost C++0x More Reading Q&A
![Page 48: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/48.jpg)
BOOST_FOREACH
ExampleBoost for each...
Background Templates STL Boost C++0x More Reading Q&A
![Page 49: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/49.jpg)
BOOST_FOREACH
ExampleBoost for each...
Background Templates STL Boost C++0x More Reading Q&A
![Page 50: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/50.jpg)
Boost Graph Library
GI port: dat_i C[0(0):0(0)]C[0(0):0(0)]
__MUX_1__[(*):(*)]
op0 [0,1]([(*):(*)])unnamed
[0]{}=={}
op1 [0,0]([(*):(*)])unnamed
[1]{}=={}
GI port: op_i C[1(1):0(0)]C[1(1):0(0)]
port_i: instr_i(1) [(#)-1(*):0(0)]
[(#)-1(*):0(0)]
op0 [0,1]op1 [0,1]([(*):(*)])unnamed
[0]{}=={}
GO port: dat_o C[0(0):0(0)]C[0(0):0(0)]
FU: offset(offset)
port_o: dat_o C[0(0):0(0)]C[0(0):0(0)]
OFS: 1
offset
port_i: ctrl_i C[0(0):0(0)]C[0(0):0(0)]
OFS: -1
offset
port_i: dat_i C[0(0):0(0)]C[0(0):0(0)]
OFS: -1
offset
op0 [3,3]op1 [2,2]([(*):(*)])unnamed
[0]{}=={}
DECODERdec_unit(dec_unit)
port_o: __MUX_0__ C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: __MUX_1__ C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: offset_ctrl_i C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: oc_i C[1(1):0(0)]C[1(1):0(0)]
dec_unit
port_i: flush_it_i(1) C[0(0):0(0)]
C[0(0):0(0)]
dec_unit
dec_unit
FU: {(1'd0)}_0
port_o: res_o C[0(0):0(0)]C[0(0):0(0)]
{(1'd0)}_0
__MUX_0__[(*):(*)]
op0 [1,1]([(*):(*)])unnamed
[0]{}=={}
FU: {(1'd1)}_0
port_o: res_o C[0(0):0(0)]C[0(0):0(0)]
{(1'd1)}_0
op1 [1,1]([(*):(*)])unnamed
[1]{}=={}
MUX_ctrl port: __MUX_0___ci [0(0):0(0)][0(0):0(0)]
([0(0):0(0)])__MUX_0__
[0]{}=={}
* [0,0]([(*):(*)])unnamed
[0]{}=={}
MUX_ctrl port: __MUX_1___ci [0(0):0(0)][0(0):0(0)]
([0(0):0(0)])__MUX_1__
[0]{}=={}
* [0,0]([(*):(*)])unnamed
[0]{}=={}
CS___MUX_0__1 | {OpC:1,OpC:2}
[(*):(*)]
op0 [0,1]op1 [0,1]([(*):(*)])unnamed
[0]{}=={}
CS___MUX_1__0 | {OpC:2}1 | {OpC:1}
[(*):(*)]
op0 [0,1]([(*):(*)])unnamed
[0]{}=={}
op1 [0,0]([(*):(*)])unnamed
[0]{}=={}
CS_offset_ctrl_i0 | {OpC:2}1 | {OpC:1}
[(*):(*)]
offset_ctrl_i [0,1]([(*):(*)])unnamed
[0]{}=={}
offset_ctrl_i [0,0]([(*):(*)])unnamed
[0]{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,0]([(*):(*)])
class_control[0]
{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,0]([(*):(*)])
class_control[0]
{}=={}
([(*):(*)])Clause Use
[0]{}=={}
{%OP_0 | %OP_1}
([(*):(*)])HW Muxing Ctrl
[0]{}=={}
{}
([(*):(*)])HW Muxing Ctrl
[0]{}=={}
{}
General GraphLibraryGraph I/O withGraphwizGraph Algorithms
Background Templates STL Boost C++0x More Reading Q&A
![Page 51: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/51.jpg)
Boost Graph Library
GI port: dat_i C[0(0):0(0)]C[0(0):0(0)]
__MUX_1__[(*):(*)]
op0 [0,1]([(*):(*)])unnamed
[0]{}=={}
op1 [0,0]([(*):(*)])unnamed
[1]{}=={}
GI port: op_i C[1(1):0(0)]C[1(1):0(0)]
port_i: instr_i(1) [(#)-1(*):0(0)]
[(#)-1(*):0(0)]
op0 [0,1]op1 [0,1]([(*):(*)])unnamed
[0]{}=={}
GO port: dat_o C[0(0):0(0)]C[0(0):0(0)]
FU: offset(offset)
port_o: dat_o C[0(0):0(0)]C[0(0):0(0)]
OFS: 1
offset
port_i: ctrl_i C[0(0):0(0)]C[0(0):0(0)]
OFS: -1
offset
port_i: dat_i C[0(0):0(0)]C[0(0):0(0)]
OFS: -1
offset
op0 [3,3]op1 [2,2]([(*):(*)])unnamed
[0]{}=={}
DECODERdec_unit(dec_unit)
port_o: __MUX_0__ C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: __MUX_1__ C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: offset_ctrl_i C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: oc_i C[1(1):0(0)]C[1(1):0(0)]
dec_unit
port_i: flush_it_i(1) C[0(0):0(0)]
C[0(0):0(0)]
dec_unit
dec_unit
FU: {(1'd0)}_0
port_o: res_o C[0(0):0(0)]C[0(0):0(0)]
{(1'd0)}_0
__MUX_0__[(*):(*)]
op0 [1,1]([(*):(*)])unnamed
[0]{}=={}
FU: {(1'd1)}_0
port_o: res_o C[0(0):0(0)]C[0(0):0(0)]
{(1'd1)}_0
op1 [1,1]([(*):(*)])unnamed
[1]{}=={}
MUX_ctrl port: __MUX_0___ci [0(0):0(0)][0(0):0(0)]
([0(0):0(0)])__MUX_0__
[0]{}=={}
* [0,0]([(*):(*)])unnamed
[0]{}=={}
MUX_ctrl port: __MUX_1___ci [0(0):0(0)][0(0):0(0)]
([0(0):0(0)])__MUX_1__
[0]{}=={}
* [0,0]([(*):(*)])unnamed
[0]{}=={}
CS___MUX_0__1 | {OpC:1,OpC:2}
[(*):(*)]
op0 [0,1]op1 [0,1]([(*):(*)])unnamed
[0]{}=={}
CS___MUX_1__0 | {OpC:2}1 | {OpC:1}
[(*):(*)]
op0 [0,1]([(*):(*)])unnamed
[0]{}=={}
op1 [0,0]([(*):(*)])unnamed
[0]{}=={}
CS_offset_ctrl_i0 | {OpC:2}1 | {OpC:1}
[(*):(*)]
offset_ctrl_i [0,1]([(*):(*)])unnamed
[0]{}=={}
offset_ctrl_i [0,0]([(*):(*)])unnamed
[0]{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,0]([(*):(*)])
class_control[0]
{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,0]([(*):(*)])
class_control[0]
{}=={}
([(*):(*)])Clause Use
[0]{}=={}
{%OP_0 | %OP_1}
([(*):(*)])HW Muxing Ctrl
[0]{}=={}
{}
([(*):(*)])HW Muxing Ctrl
[0]{}=={}
{}
General GraphLibraryGraph I/O withGraphwizGraph Algorithms
Background Templates STL Boost C++0x More Reading Q&A
![Page 52: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/52.jpg)
Boost Graph Library
GI port: dat_i C[0(0):0(0)]C[0(0):0(0)]
__MUX_1__[(*):(*)]
op0 [0,1]([(*):(*)])unnamed
[0]{}=={}
op1 [0,0]([(*):(*)])unnamed
[1]{}=={}
GI port: op_i C[1(1):0(0)]C[1(1):0(0)]
port_i: instr_i(1) [(#)-1(*):0(0)]
[(#)-1(*):0(0)]
op0 [0,1]op1 [0,1]([(*):(*)])unnamed
[0]{}=={}
GO port: dat_o C[0(0):0(0)]C[0(0):0(0)]
FU: offset(offset)
port_o: dat_o C[0(0):0(0)]C[0(0):0(0)]
OFS: 1
offset
port_i: ctrl_i C[0(0):0(0)]C[0(0):0(0)]
OFS: -1
offset
port_i: dat_i C[0(0):0(0)]C[0(0):0(0)]
OFS: -1
offset
op0 [3,3]op1 [2,2]([(*):(*)])unnamed
[0]{}=={}
DECODERdec_unit(dec_unit)
port_o: __MUX_0__ C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: __MUX_1__ C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: offset_ctrl_i C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: oc_i C[1(1):0(0)]C[1(1):0(0)]
dec_unit
port_i: flush_it_i(1) C[0(0):0(0)]
C[0(0):0(0)]
dec_unit
dec_unit
FU: {(1'd0)}_0
port_o: res_o C[0(0):0(0)]C[0(0):0(0)]
{(1'd0)}_0
__MUX_0__[(*):(*)]
op0 [1,1]([(*):(*)])unnamed
[0]{}=={}
FU: {(1'd1)}_0
port_o: res_o C[0(0):0(0)]C[0(0):0(0)]
{(1'd1)}_0
op1 [1,1]([(*):(*)])unnamed
[1]{}=={}
MUX_ctrl port: __MUX_0___ci [0(0):0(0)][0(0):0(0)]
([0(0):0(0)])__MUX_0__
[0]{}=={}
* [0,0]([(*):(*)])unnamed
[0]{}=={}
MUX_ctrl port: __MUX_1___ci [0(0):0(0)][0(0):0(0)]
([0(0):0(0)])__MUX_1__
[0]{}=={}
* [0,0]([(*):(*)])unnamed
[0]{}=={}
CS___MUX_0__1 | {OpC:1,OpC:2}
[(*):(*)]
op0 [0,1]op1 [0,1]([(*):(*)])unnamed
[0]{}=={}
CS___MUX_1__0 | {OpC:2}1 | {OpC:1}
[(*):(*)]
op0 [0,1]([(*):(*)])unnamed
[0]{}=={}
op1 [0,0]([(*):(*)])unnamed
[0]{}=={}
CS_offset_ctrl_i0 | {OpC:2}1 | {OpC:1}
[(*):(*)]
offset_ctrl_i [0,1]([(*):(*)])unnamed
[0]{}=={}
offset_ctrl_i [0,0]([(*):(*)])unnamed
[0]{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,0]([(*):(*)])
class_control[0]
{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,0]([(*):(*)])
class_control[0]
{}=={}
([(*):(*)])Clause Use
[0]{}=={}
{%OP_0 | %OP_1}
([(*):(*)])HW Muxing Ctrl
[0]{}=={}
{}
([(*):(*)])HW Muxing Ctrl
[0]{}=={}
{}
General GraphLibraryGraph I/O withGraphwizGraph Algorithms
Background Templates STL Boost C++0x More Reading Q&A
![Page 53: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/53.jpg)
Boost Graph Library
GI port: dat_i C[0(0):0(0)]C[0(0):0(0)]
__MUX_1__[(*):(*)]
op0 [0,1]([(*):(*)])unnamed
[0]{}=={}
op1 [0,0]([(*):(*)])unnamed
[1]{}=={}
GI port: op_i C[1(1):0(0)]C[1(1):0(0)]
port_i: instr_i(1) [(#)-1(*):0(0)]
[(#)-1(*):0(0)]
op0 [0,1]op1 [0,1]([(*):(*)])unnamed
[0]{}=={}
GO port: dat_o C[0(0):0(0)]C[0(0):0(0)]
FU: offset(offset)
port_o: dat_o C[0(0):0(0)]C[0(0):0(0)]
OFS: 1
offset
port_i: ctrl_i C[0(0):0(0)]C[0(0):0(0)]
OFS: -1
offset
port_i: dat_i C[0(0):0(0)]C[0(0):0(0)]
OFS: -1
offset
op0 [3,3]op1 [2,2]([(*):(*)])unnamed
[0]{}=={}
DECODERdec_unit(dec_unit)
port_o: __MUX_0__ C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: __MUX_1__ C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: offset_ctrl_i C[0(0):0(0)]C[0(0):0(0)]
dec_unit
port_o: oc_i C[1(1):0(0)]C[1(1):0(0)]
dec_unit
port_i: flush_it_i(1) C[0(0):0(0)]
C[0(0):0(0)]
dec_unit
dec_unit
FU: {(1'd0)}_0
port_o: res_o C[0(0):0(0)]C[0(0):0(0)]
{(1'd0)}_0
__MUX_0__[(*):(*)]
op0 [1,1]([(*):(*)])unnamed
[0]{}=={}
FU: {(1'd1)}_0
port_o: res_o C[0(0):0(0)]C[0(0):0(0)]
{(1'd1)}_0
op1 [1,1]([(*):(*)])unnamed
[1]{}=={}
MUX_ctrl port: __MUX_0___ci [0(0):0(0)][0(0):0(0)]
([0(0):0(0)])__MUX_0__
[0]{}=={}
* [0,0]([(*):(*)])unnamed
[0]{}=={}
MUX_ctrl port: __MUX_1___ci [0(0):0(0)][0(0):0(0)]
([0(0):0(0)])__MUX_1__
[0]{}=={}
* [0,0]([(*):(*)])unnamed
[0]{}=={}
CS___MUX_0__1 | {OpC:1,OpC:2}
[(*):(*)]
op0 [0,1]op1 [0,1]([(*):(*)])unnamed
[0]{}=={}
CS___MUX_1__0 | {OpC:2}1 | {OpC:1}
[(*):(*)]
op0 [0,1]([(*):(*)])unnamed
[0]{}=={}
op1 [0,0]([(*):(*)])unnamed
[0]{}=={}
CS_offset_ctrl_i0 | {OpC:2}1 | {OpC:1}
[(*):(*)]
offset_ctrl_i [0,1]([(*):(*)])unnamed
[0]{}=={}
offset_ctrl_i [0,0]([(*):(*)])unnamed
[0]{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,0]([(*):(*)])
class_control[0]
{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,1]([(*):(*)])
class_control[0]
{}=={}
* [0,0]([(*):(*)])
class_control[0]
{}=={}
([(*):(*)])Clause Use
[0]{}=={}
{%OP_0 | %OP_1}
([(*):(*)])HW Muxing Ctrl
[0]{}=={}
{}
([(*):(*)])HW Muxing Ctrl
[0]{}=={}
{}
General GraphLibraryGraph I/O withGraphwizGraph Algorithms
Background Templates STL Boost C++0x More Reading Q&A
![Page 54: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/54.jpg)
Regex
ExampleCredit card number parsing...
Background Templates STL Boost C++0x More Reading Q&A
![Page 55: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/55.jpg)
Regex
ExampleCredit card number parsing...
Background Templates STL Boost C++0x More Reading Q&A
![Page 56: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/56.jpg)
Spirit
ExampleRoman number parser...
Background Templates STL Boost C++0x More Reading Q&A
![Page 57: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/57.jpg)
Spirit
ExampleRoman number parser...
Background Templates STL Boost C++0x More Reading Q&A
![Page 58: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/58.jpg)
Bimap
Background Templates STL Boost C++0x More Reading Q&A
![Page 59: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/59.jpg)
ASIO
[2]
Background Templates STL Boost C++0x More Reading Q&A
![Page 60: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/60.jpg)
Format
Printf like format specification for std::cout
ExampleSome formatted output...
Background Templates STL Boost C++0x More Reading Q&A
![Page 61: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/61.jpg)
Format
Printf like format specification for std::cout
ExampleSome formatted output...
Background Templates STL Boost C++0x More Reading Q&A
![Page 62: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/62.jpg)
Interprocess
Cross platform interprocess communication.Shared memoryMemory-mapped filesSemaphores, mutexes,Named synchronization objectsFile lockingRelative pointersMessage queues
Background Templates STL Boost C++0x More Reading Q&A
![Page 63: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/63.jpg)
Lambda
λ-functions in C++
int foo(int)...list<int> v(10);for_each(v.begin(), v.end(), _1 = 17);vector<int*> vp(10);transform(v.begin(),v.end(),vp.begin(),&_1);for_each(v.begin(),v.end(), _1 = bind(foo,_1));sort(vp.begin(),vp.end(),*_1 < *_2);for_each(vp.begin(),vp.end(), cout << *_1 << ’\n’);
Background Templates STL Boost C++0x More Reading Q&A
![Page 64: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/64.jpg)
Optional
Problem
int read_int(std::istream&);
Traditional Solutions
bool read_int(std::istream&, int&);int read_int(std::istream&) throw(some error);
Solution with boost::optional
boost::optional<int> read_int(std::istream&);
Background Templates STL Boost C++0x More Reading Q&A
![Page 65: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/65.jpg)
Optional
Problem
int read_int(std::istream&);
Traditional Solutions
bool read_int(std::istream&, int&);int read_int(std::istream&) throw(some error);
Solution with boost::optional
boost::optional<int> read_int(std::istream&);
Background Templates STL Boost C++0x More Reading Q&A
![Page 66: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/66.jpg)
Optional
Problem
int read_int(std::istream&);
Traditional Solutions
bool read_int(std::istream&, int&);int read_int(std::istream&) throw(some error);
Solution with boost::optional
boost::optional<int> read_int(std::istream&);
Background Templates STL Boost C++0x More Reading Q&A
![Page 67: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/67.jpg)
Program Options
ExampleProgram options...
Background Templates STL Boost C++0x More Reading Q&A
![Page 68: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/68.jpg)
Program Options
ExampleProgram options...
Background Templates STL Boost C++0x More Reading Q&A
![Page 69: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/69.jpg)
Serialization
PortableVersioningProper pointer store/restoreSerialization of STL containers
ExampleSerialization example...
Background Templates STL Boost C++0x More Reading Q&A
![Page 70: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/70.jpg)
Serialization
PortableVersioningProper pointer store/restoreSerialization of STL containers
ExampleSerialization example...
Background Templates STL Boost C++0x More Reading Q&A
![Page 71: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/71.jpg)
Smart Pointres
Traditional Solution
int* int_pointer = new int(17);....// Somewhere else in the codedelete int_pointer
ProblemsForget deleteMiss delete due to exceptionMemory management code
Solution with boost::shared_ptr
boost::shared_ptr<int> int_pointer(new int(17));
Background Templates STL Boost C++0x More Reading Q&A
![Page 72: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/72.jpg)
Smart Pointres
Traditional Solution
int* int_pointer = new int(17);....// Somewhere else in the codedelete int_pointer
ProblemsForget deleteMiss delete due to exceptionMemory management code
Solution with boost::shared_ptr
boost::shared_ptr<int> int_pointer(new int(17));
Background Templates STL Boost C++0x More Reading Q&A
![Page 73: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/73.jpg)
Smart Pointres
Traditional Solution
int* int_pointer = new int(17);....// Somewhere else in the codedelete int_pointer
ProblemsForget deleteMiss delete due to exceptionMemory management code
Solution with boost::shared_ptr
boost::shared_ptr<int> int_pointer(new int(17));
Background Templates STL Boost C++0x More Reading Q&A
![Page 74: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/74.jpg)
Smart Pointres
Traditional Solution
int* int_pointer = new int(17);....// Somewhere else in the codedelete int_pointer
ProblemsForget deleteMiss delete due to exceptionMemory management code
Solution with boost::shared_ptr
boost::shared_ptr<int> int_pointer(new int(17));
Background Templates STL Boost C++0x More Reading Q&A
![Page 75: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/75.jpg)
Smart Pointres
Traditional Solution
int* int_pointer = new int(17);....// Somewhere else in the codedelete int_pointer
ProblemsForget deleteMiss delete due to exceptionMemory management code
Solution with boost::shared_ptr
boost::shared_ptr<int> int_pointer(new int(17));
Background Templates STL Boost C++0x More Reading Q&A
![Page 76: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/76.jpg)
Other Smart Pointers
scoped_ptrscoped_arrayshared_arrayweak_ptrintrusive_ptr
Background Templates STL Boost C++0x More Reading Q&A
![Page 77: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/77.jpg)
Other Smart Pointers
scoped_ptrscoped_arrayshared_arrayweak_ptrintrusive_ptr
Background Templates STL Boost C++0x More Reading Q&A
![Page 78: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/78.jpg)
Other Smart Pointers
scoped_ptrscoped_arrayshared_arrayweak_ptrintrusive_ptr
Background Templates STL Boost C++0x More Reading Q&A
![Page 79: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/79.jpg)
Other Smart Pointers
scoped_ptrscoped_arrayshared_arrayweak_ptrintrusive_ptr
Background Templates STL Boost C++0x More Reading Q&A
![Page 80: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/80.jpg)
Other Smart Pointers
scoped_ptrscoped_arrayshared_arrayweak_ptrintrusive_ptr
Background Templates STL Boost C++0x More Reading Q&A
![Page 81: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/81.jpg)
And Much Much More...
AccumulatorsCRCDate and timeLexical castMathSignalsState chartUnitsTemplate meta programmingRandomGeneric Image LibraryIn_place_factoryMessage Passing InterfaceEven more at www.boost.org
Background Templates STL Boost C++0x More Reading Q&A
![Page 82: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/82.jpg)
C++0x - The Next C++ Standard
Expected to be done by 2011Almost 100% backward compatibleSupport is growing
Background Templates STL Boost C++0x More Reading Q&A
![Page 83: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/83.jpg)
C++0x - The Next C++ Standard
Expected to be done by 2011Almost 100% backward compatibleSupport is growing
Background Templates STL Boost C++0x More Reading Q&A
![Page 84: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/84.jpg)
C++0x - The Next C++ Standard
Expected to be done by 2011Almost 100% backward compatibleSupport is growing
Background Templates STL Boost C++0x More Reading Q&A
![Page 85: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/85.jpg)
Rvalue Reference
Move semanticsPerfect Forwarding
ExampleVector move...
Background Templates STL Boost C++0x More Reading Q&A
![Page 86: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/86.jpg)
Rvalue Reference
Move semanticsPerfect Forwarding
ExampleVector move...
Background Templates STL Boost C++0x More Reading Q&A
![Page 87: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/87.jpg)
Rvalue Reference
Move semanticsPerfect Forwarding
ExampleVector move...
Background Templates STL Boost C++0x More Reading Q&A
![Page 88: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/88.jpg)
Generalized Constants
Illegal in ANSI C++
int GetFive() {return 5};...int arr[GetFive()+7];
Legal in C++0x
constexpr int GetFive() {return 5};...int arr[GetFive()+7];
Background Templates STL Boost C++0x More Reading Q&A
![Page 89: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/89.jpg)
Generalized Constants
Illegal in ANSI C++
int GetFive() {return 5};...int arr[GetFive()+7];
Legal in C++0x
constexpr int GetFive() {return 5};...int arr[GetFive()+7];
Background Templates STL Boost C++0x More Reading Q&A
![Page 90: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/90.jpg)
Initializer Lists
class SequenceClass{public:SequenceClass(std::initializer_list<int> list);
};...SequenceClass someVar = {1, 4, 5, 6};
void FunctionName(std::initializer_list<float> list);FunctionName({1.0f, -3.45f, -0.4f});
std::vector<std::string> v = { "xy", "plu", "abra" };std::vector<std::string> v{ "xy", "plu", "abra" };
Background Templates STL Boost C++0x More Reading Q&A
![Page 91: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/91.jpg)
Uniform Initialization
struct BasicStruct{int x;double y;
};struct AltStruct{
AltStruct(int x, double y) : x_{x}, y_{y} {}private:
int x_;double y_;
};BasicStruct var1{5, 3.2};AltStruct var2{2, 4.3};
Background Templates STL Boost C++0x More Reading Q&A
![Page 92: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/92.jpg)
Automatic Types
auto someType = boost::bind(&someFunction, _2,_1, someObject);
auto otherVariable = 5;
int someInt;decltype(someInt) otherIntegerVariable = 5;
Background Templates STL Boost C++0x More Reading Q&A
![Page 93: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/93.jpg)
Range Based For Loops
Works forarraysinitializer listsContainers with begin() ... end()
int my_array[5] = {1, 2, 3, 4, 5};for(int& x : my_array){x *= 2;
}
Background Templates STL Boost C++0x More Reading Q&A
![Page 94: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/94.jpg)
Lambda
λ-functions in C++
int foo(int)...list<int> v(10);for_each(v.begin(), v.end(), _1 = 17);vector<int*> vp(10);transform(v.begin(),v.end(),vp.begin(),&_1);for_each(v.begin(),v.end(), _1 = bind(foo,_1));sort(vp.begin(),vp.end(),*_1 < *_2);for_each(vp.begin(),vp.end(), cout << *_1 << ’\n’);
Background Templates STL Boost C++0x More Reading Q&A
![Page 95: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/95.jpg)
Lambda Functions
[](int x, int y) { return x + y; }[](int x, int y) -> int { int z = x + y; return z + x; }std::vector<int> someList;int total = 0;std::for_each(someList.begin(),
someList.end(), [&total](int x) {total += x;
});std::cout << total;
Background Templates STL Boost C++0x More Reading Q&A
![Page 96: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/96.jpg)
Alternative Function Syntax
Problem
template< typename LHS, typename RHS>Ret AddingFunc(const LHS &lhs, const RHS &rhs){return lhs + rhs;}
Solution
template< typename LHS, typename RHS>auto AddingFunc(const LHS &lhs, const RHS &rhs)-> decltype(lhs+rhs){return lhs + rhs;}
Background Templates STL Boost C++0x More Reading Q&A
![Page 97: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/97.jpg)
Alternative Function Syntax
Problem
template< typename LHS, typename RHS>Ret AddingFunc(const LHS &lhs, const RHS &rhs){return lhs + rhs;}
Solution
template< typename LHS, typename RHS>auto AddingFunc(const LHS &lhs, const RHS &rhs)-> decltype(lhs+rhs){return lhs + rhs;}
Background Templates STL Boost C++0x More Reading Q&A
![Page 98: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/98.jpg)
Varadic Templates
template<typename T, typename... Args>void printf(const char* s, T value, Args... args){
while (*s){
if (*s == ’%’ && *(++s) != ’%’){
std::cout << value;printf(s, args...);return;
}std::cout << *s++;
}throw std::logic_error
("extra arguments provided to printf");}
Background Templates STL Boost C++0x More Reading Q&A
![Page 99: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/99.jpg)
User Defined Literals
OutputType operator "" _Suffix(unsigned long long);OutputType operator "" _Suffix(long double);
OutputType someVariable = 1234_Suffix;OutputType anotherVariable = 3.1416_Suffix;
Background Templates STL Boost C++0x More Reading Q&A
![Page 100: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/100.jpg)
Default and Delete Member Functions
struct NonCopyableAndNewable{NonCopyable & operator=(const NonCopyable&) = delete;NonCopyable(const NonCopyable&) = delete;NonCopyable() = default;void *operator new(std::size_t) = delete;
void f(int i);template<class T> void f(T) = delete;
};
Background Templates STL Boost C++0x More Reading Q&A
![Page 101: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/101.jpg)
Compile Time Assertion
ExampleStatic assert example...
Background Templates STL Boost C++0x More Reading Q&A
![Page 102: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/102.jpg)
Compile Time Assertion
ExampleStatic assert example...
Background Templates STL Boost C++0x More Reading Q&A
![Page 103: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/103.jpg)
Other Changes
Relaxed POD requirementsextern templatenullptr
Strongly typed enumerationsExplicit conversion operatorsUnrestricted unionsUnicode stringsMultithreading
Background Templates STL Boost C++0x More Reading Q&A
![Page 104: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/104.jpg)
More Reading
Bjarne StroustrupThe C++ Programming Language
Nicolai M. JosuttisThe C++ Standard Library: A Tutorial and Reference
David Vandevoorde, Nicolai M. JosuttisC++ Templates: The Complete Guide
Boosthttp://www.boost.org
STLhttp://www.sgi.com/tech/stl/
C++0xhttp://en.wikipedia.org/wiki/C%2B%2B0x
Background Templates STL Boost C++0x More Reading Q&A
![Page 105: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/105.jpg)
Questions
Background Templates STL Boost C++0x More Reading Q&A
![Page 106: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/106.jpg)
Questions
Background Templates STL Boost C++0x More Reading Q&A
![Page 107: An Oddysey in C++ · An Oddysey in C++ A Guided Tour of Modern C++ Per Karlström per@karlstrom.se Upplysningen 2010-03-02 BackgroundTemplatesSTLBoostC++0xMore ReadingQ&A](https://reader036.fdocuments.in/reader036/viewer/2022071117/600221d701e28311431426c6/html5/thumbnails/107.jpg)
Attribution
[1] [1]Christian Coohttp://commons.wikimedia.org/wiki/File:Puertobarcelona2.jpg
[2] [2]Achim Heringhttp://commons.wikimedia.org/wiki/File:Cable_sald.jpg
Appendix