// Основная шаблонная функция
send template<typename... Args>
void send(int dataCommand, Args&&... args)
{
if (dataCommand == 0)
{
std::cout << "sendCommand called with arguments: ";
}
else
{
std::cout << "sendData called with arguments: ";
}
(std::cout << ... << args) << std::endl;
}
// Обертка для sendCommand
template<typename... Args>
void sendCommand(Args&&... args)
{
send(0, std::forward<Args>(args)...);
}
// Обертка для sendData
template<typename... Args>
void sendData(Args&&... args)
{
send(1, std::forward<Args>(args)...);
}
int main()
{
// Примеры использования
sendCommand(0x12); // вызовется send(0, 0x12)
sendCommand(0x12, 0x34); // вызовется send(0, 0x12, 0x34)
sendCommand(0x12, 0x34, 0x56); // вызовется send(0, 0x12, 0x34, 0x56)
sendData(0x12, 0x34); // вызовется send(1, 0x12, 0x34)
// Примеры с массивами и строками
sendCommand("hello"); // вызовется send(0, "hello")
unsigned char buf[3] = {0x01, 0x02, 0x03};
sendData(buf); // вызовется send(1, buf)
return 0;
}