Modernes C++ programmieren

Okt 23, 2024

lst-0657-godb.cpp

//#(compile) c++; compiler:g132; options:-O3 -std=c++23; libs:-
// https://godbolt.org/z/M6earoWMn 
#include <iostream>
#include <string>
#include <concepts>    // copyable, C++20
template <std::copyable T>
class MyContainer {
    T data_;
public:
    void setData(const T& d) { data_ = d; } // allgemeiner Fall
    T getData() const { return data_; }     // allgemeiner Fall
};
template<>                                  // Spezialisierung
void MyContainer<std::string>::setData(const std::string& d) {
    data_ = "[" + d + "]";
}
int main() {
    MyContainer<std::string> mcString;
    mcString.setData("Geschichte");
    std::cout << mcString.getData() << '\n';  // Ausgabe: [Geschichte]
    MyContainer<int> mcInt;
    mcInt.setData(5);
    std::cout << mcInt.getData() << '\n';     // Ausgabe: 5
}