Forma elegante de pasar múltiples argumentos a una función

Tengo una función que se ve así:

bool generate_script (bool net, bool tv, bool phone,
                        std::string clientsID,
                        std::string password,
                        int index, std::string number, 
                        std::string Iport, std::string sernoID,
                        std::string VoiP_number, std::string  VoiP_pass,
                        std::string target, int slot, int port, 
                        int onu, int extra, std::string IP, std::string MAC);

En mi opinión, se ve feo. ¿Cuál es la forma correcta de manejar este problema? ¿Debo crear algunos vectores con diferentes tipos de datos (int, string y bool) y pasarlos como argumentos a esta función?

Respuestas a la pregunta(6)

Su respuesta a la pregunta