foldcalls.cpp

The following code example is taken from the book
C++17 - The Complete Guide by Nicolai M. Josuttis, Leanpub, 2017
The code is licensed under a Creative Commons Attribution 4.0 International License. Creative Commons License


#include <iostream>

// template for variadic number of base classes
template<typename... Bases>
class MultiBase : private Bases...
{
  public:
    void print() {
      // call print() of all base classes:
      (... , Bases::print());
    }
};

struct A {
  void print() { std::cout << "A::print()\n"; }
};

struct B {
  void print() { std::cout << "B::print()\n"; }
};

struct C {
  void print() { std::cout << "C::print()\n"; }
};

int main()
{
    MultiBase<A,B,C> mb;
    mb.print();
}