"is not an lvalue" when passing template function to spawn function
Paul Backus
snarwin at gmail.com
Wed Nov 8 16:47:02 UTC 2023
On Wednesday, 8 November 2023 at 16:30:49 UTC, Bienlein wrote:
> Hello,
>
> I get the error "`addToBiz(T)(Biz!T biz)` is not an lvalue and
> cannot be modified" when compiling the code below. Can't find a
> way how to do it right. Am a D newbie and would appreciate some
> help.
>
> [...]
>
> static void addToBiz(T)(Biz!T biz)
> {
> // ...
> }
>
>
> int main()
> {
> auto biz = new Biz!int(123);
> spawn(&addToBiz, biz);
> }
This is a really bad error message.
The actual problem here is that you can't take the address of a
template without instantiating it first. To make your example
work, replace `&addToBiz` with `&addToBiz!int`, like this:
spawn(&addToBiz!int, biz);
More information about the Digitalmars-d-learn
mailing list