Date: Tue, 11 Mar 2025 18:32:37 -0500
Hi,
It seems weird to add a special-case to just allow lambdas in enums like
this. The syntax is confusing too, it resembles enum constant syntax and
this isn't syntax that exists for other similar language constructs.
I would much rather see enums get normal member functions like most other
languages have.
Cheers,
Jeremy
On Tue, Mar 11, 2025 at 6:20 PM Dmitrii Shabalin via Std-Proposals <
std-proposals_at_[hidden]> wrote:
> Hi.
> Since C++11 we have lambdas.
> I believe, everyone, who works with enums, write some functions for this
> particular enum only.
> However, there is no way to associate this function with the enum's
> namespace.
> My idea: we can set a value for any of enum fields. It should be const and
> could be constexpr.
> May be, we can set a lambda for a field too?
> something like:
> enum Test{
> testValue = 0,
> toString =[](Test value) -> std::string { if (value == testValue) return
> "testValue"; else return ""; },
> max = testValue
> }
>
> And usage will be something like:
> std::cout << "Test value" << Test::toString(Test::testValue);
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
It seems weird to add a special-case to just allow lambdas in enums like
this. The syntax is confusing too, it resembles enum constant syntax and
this isn't syntax that exists for other similar language constructs.
I would much rather see enums get normal member functions like most other
languages have.
Cheers,
Jeremy
On Tue, Mar 11, 2025 at 6:20 PM Dmitrii Shabalin via Std-Proposals <
std-proposals_at_[hidden]> wrote:
> Hi.
> Since C++11 we have lambdas.
> I believe, everyone, who works with enums, write some functions for this
> particular enum only.
> However, there is no way to associate this function with the enum's
> namespace.
> My idea: we can set a value for any of enum fields. It should be const and
> could be constexpr.
> May be, we can set a lambda for a field too?
> something like:
> enum Test{
> testValue = 0,
> toString =[](Test value) -> std::string { if (value == testValue) return
> "testValue"; else return ""; },
> max = testValue
> }
>
> And usage will be something like:
> std::cout << "Test value" << Test::toString(Test::testValue);
> --
> Std-Proposals mailing list
> Std-Proposals_at_[hidden]
> https://lists.isocpp.org/mailman/listinfo.cgi/std-proposals
>
Received on 2025-03-11 23:32:50