But here is the thing:

 

Why not make code simpler??

 

Why write multiple “= delete” functions, conscientiously tracking all conversions, when explicit inside functions is much simpler??

 

Also, someone suggested explicit template parameters, like this:

 

template <explicit typename T>

 

Why not have consistence, & allow:

 

int func (explicit int x, int y)

 

as well?

 

From: Jason McKesson via Std-Proposals
Sent: 01 May 2022 22:07
To: std-proposals@lists.isocpp.org
Cc: Jason McKesson
Subject: Re: [std-proposals] explicit keyword (new use)

 

We have `= delete` for removing unwanted conversions. Indeed, you can
basically force the use of `int` with:

template<typename T>
int func (int, T) = delete;

Any call to `func` that doesn't pass an `int` as the second parameter
will fail to compile. Even things convertible to `int` will not be
used.

If you want to allow more things to call it, you can only cull out
floating-point types with this overload:

int func(int, double) = delete;

Calling func(5, 1) will work, but func(5, 3.4) or even func(5, 2.3f)
will fail. This preserves the ability to call it with types
convertible to `int` (but those which are convertible to `int` *and*
floats will fail due to ambiguity).

On Sun, May 1, 2022 at 3:57 AM Abdullah Qasim via Std-Proposals
<std-proposals@lists.isocpp.org> wrote:
>
>
>
> int func (int var, explicit int select_menu)
>
> {
>
>     /// ...
>
> }
>
>
>
> Why would I want user to put a double value in select_menu ???
>
>
>
> Also, why would I want to disallow a double in var ???
>
>
>
> The solution:
>
>             Allow explicit in param list!!
>
>
>
> Not too hard to implement, either.
>
> --
> Std-Proposals mailing list
> Std-Proposals@lists.isocpp.org
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
--
Std-Proposals mailing list
Std-Proposals@lists.isocpp.org
https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals