Method Overloading Question

Good evening Dear Arduino Community,

I want to understand some specifics regarding method overloading. Consider the following criteria:

a) void task_x(Int a){convert to char and send through serial}

b) void task_x(Int a, Int b){convert to chars in sequence and send through serial}

c) void task_x(Int a, Int b, Int c){convert to chars in sequence and send through serial}

... extending further for more int overloading, say 10 more ints.

I understand that overloading criteria consider differentiation in types and argument count. The proposed overloading is differentiated only by the number of int arguments for the sake of simplicity as you can see.
For the purpose of this example, consider that the values received as arguments need to be received and converted in sequence (int a, b, c, d, e....considering further overloading) to serialize for some other function; thus the order of the received arguments counts. (I don't have a coded example yet).

The idea is to overload a method that an user can recycle given different choices of parameters in a sequence to pass as arguments to the method, but skipping certain positions in the arguments passed on to the function.

Is it possible to create a way to apply a "selective" overloading for a user choice based on example criteria int a, int c, alone? skipping the int b? this without forcing the user to write a value on the int b to force the overloading choice c).

Surely I could be stretching the interpretation of the use of overloading incorrectly? If so, please point out a method to apply selective argument discrimination while still applying overloading, or otherwise the correct methodology to apply this criteria using the same method name.

No way to specify a and c only, and not also b.
If you do void task_x(Int a, Int b) will be selected as the method called.

What you need is optional defaulted parameters, combined with parameter naming. And C doesn’t support that, and to the best of my knowledge neither does C++.

if you had functions with 2 and 3 arguments, but only wanted to pass arguments 1 & 3 to the function with 3 arguments, how would the compiler know argument 2 was skipped and you didn't want to exercise the function with just 2 arguments?

Some languages support it with named optional arguments, but not C / C++.

NB: C# and NOT Arduino Code!

static void MyFunc(int a = 0, int b = 0, int c = 0)
{
 Console.WriteLine($"a={a} b={b} c={c}");
}

static void Main(string[] args)
{
 // This line outputs: a=1 b=0 c=2
 // Unspecified parameter b takes the default value given: 0
 Program.MyFunc(a: 1, c: 2);
}

Basically, no. You can use a builder pattern, or you can give your methods meaningful names. C is pretty "close to the metal", method arguments are just bytes on the stack - they don't have additional metadata to distinguish them.

Thank you all, team.

I do understand your proposals. I guess the best way to go about it is to use a meaningful naming scheme and default parameters to carefully define the overloading strategy.

Regards!
-EZ