C++ Logo


Advanced search

Re: [std-proposals] explicit keyword (new use)

From: Abdullah Qasim <iamminecraftredstoner_at_[hidden]>
Date: Tue, 3 May 2022 06:51:40 +0000
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<mailto:std-proposals_at_[hidden]>
Sent: 01 May 2022 22:07
To: std-proposals_at_[hidden]<mailto:std-proposals_at_[hidden]>
Cc: Jason McKesson<mailto:jmckesson_at_[hidden]>
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

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_at_[hidden]> 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_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
Std-Proposals mailing list

Received on 2022-05-03 06:51:42