#pragma once #include #include #include /// Superclass of all `MASK` writing task classes struct Task { Task(); Task(const Task&) = delete; Task(Task&&); virtual ~Task(); private: struct _impl; protected: const std::unique_ptr<_impl> inner; }; // Create a `Task` subtype for writing the bits in `MASK` to `output_slice`, create an instance of that type. Then return it as a `Task`. template std::unique_ptr writing_task_for(u8* output_slice, ... TODO