да самому стало интересно....
// Online IDE - Code Editor, Compiler, Interpreter
#include<stdio.h>
#include <iostream>
template<typename... Args>
void send(int firstByte, Args... args)
{
auto print = [](auto& arg) { std::cout << arg << " "; };//лямда, дла печати каждого аргумента
std::cout << (firstByte == 0 ? "code0()" : "code1()") << std::endl;
(print(args), ...);
std::cout << std::endl;
}
// Обертка для sendCommand
template<typename... Args>
void sendCommand(Args... args)
{
send(0, args...);
}
// Обертка для sendData
template<typename... Args>
void sendData(Args... args)
{
send(1, args...);
}
int main() {
// Примеры использования
std::cout << "sendCommand(0x12) -> ";
sendCommand(0x12); // вызовется send(0, 0x12)
std::cout << "sendCommand(0x12, 0x34) -> ";
sendCommand(0x12, 0x34); // вызовется send(0, 0x12, 0x34)
std::cout << "sendCommand(0x12, 0x34, 0x56) -> ";
sendCommand(0x12, 0x34, 0x56); // вызовется send(0, 0x12, 0x34, 0x56)
std::cout << "sendData(0x12, 0x34) -> ";
sendData(0x12, 0x34); // вызовется send(1, 0x12, 0x34)
// Примеры с массивами и строками
std::cout << "sendCommand(\"hello\") -> ";
sendCommand("hello"); // вызовется send(0, "hello")
unsigned char buf[3] = {0x01, 0x02, 0x03};
std::cout << "sendData(buf) -> ";
sendData(buf); // вызовется send(1, buf)
return 0;
}
Проверил тут на с++17. выхлоп