#include <iostream>
using namespace std;

struct Flyable{
  int loadConcreteData(){
  	cout << "Flyable\n"; return 0;
  }
};

struct Drivable{
  int loadConcreteData(){
  	 cout << "Drivable\n"; return 0;
  }
};

class Object{
  virtual void loadData(){
  }
};

template<class ...CS>
struct ConcreteLoader : Object, CS... {
  	void loadData() override {
  		int load[] = {
  			this->CS::loadConcreteData()...
  		};
  	}
};

class FlyingCar : public ConcreteLoader<Flyable,Drivable>{
};

int main() {
	FlyingCar fc;
	fc.loadData();
	return 0;
}