Boost.CompressedPair stellt mit boost::compressed_pair eine Klasse zur Verfügung, die sich wie std::pair verhält. Ist einer oder sind beide Template-Parameter leere Klassen, benötigt boost::compressed_pair jedoch weniger Speicherplatz. Hierbei kommt eine Optimierung zum Einsatz, die auf Englisch empty base class optimization heißt.
Um boost::compressed_pair verwenden zu können, müssen Sie die Headerdatei boost/compressed_pair.hpp einbinden.
boost::compressed_pair#include <boost/compressed_pair.hpp>
#include <utility>
#include <iostream>
struct empty {};
int main()
{
std::pair<int, empty> p;
std::cout << sizeof(p) << '\n';
boost::compressed_pair<int, empty> cp;
std::cout << sizeof(cp) << '\n';
}Wenn Sie Beispiel 28.1 ausführen, wird Ihnen für cp eine geringere Speichergröße ausgegeben als für p. Mit Visual C++ 2013 erstellt und auf einem 64-Bit Windows 7-System ausgeführt gibt das Beispielprogramm für sizeof(cp) 4 und für sizeof(p) 8 aus.
Beachten Sie, dass es einen weiteren großen Unterschied zwischen std::pair und boost::compressed_pair gibt: Während Sie bei std::pair über zwei Eigenschaften first und second auf gespeicherte Werte zugreifen, rufen Sie bei boost::compressed_pair zwei Methoden first() und second() auf.