Код IT Загрузка примера кода…

C++ main.cpp
template<typename StoragePolicy, typename LoggingPolicy>
class Container : private StoragePolicy, private LoggingPolicy {
public:
    void add(int value) {
        StoragePolicy::store(value);
        LoggingPolicy::log("Added", value);
    }
};

struct VectorStorage {
    std::vector<int> data;
    void store(int v) { data.push_back(v); }
};

struct SilentLogging {
    void log(const char*, int) {}
};

using MyContainer = Container<VectorStorage, SilentLogging>;
template<typename StoragePolicy, typename LoggingPolicy>
class Container : private StoragePolicy, private LoggingPolicy {
public:
    void add(int value) {
        StoragePolicy::store(value);
        LoggingPolicy::log("Added", value);
    }
};

struct VectorStorage {
    std::vector<int> data;
    void store(int v) { data.push_back(v); }
};

struct SilentLogging {
    void log(const char*, int) {}
};

using MyContainer = Container<VectorStorage, SilentLogging>;