[phobos] [D-Programming-Language/phobos] 005775: Allow Variant.visit to support const types.
GitHub via phobos
phobos at puremagic.com
Sun Aug 23 01:37:30 PDT 2015
Branch: refs/heads/master
Home: https://github.com/D-Programming-Language/phobos
Commit: 0057756b28f78664cc184eac100dc975e3fdc625
https://github.com/D-Programming-Language/phobos/commit/0057756b28f78664cc184eac100dc975e3fdc625
Author: Ryan Roden-Corrent <ryan at rcorre.net>
Date: 2015-08-11 (Tue, 11 Aug 2015)
Changed paths:
M std/variant.d
Log Message:
-----------
Allow Variant.visit to support const types.
Assuming that Foo.depth and Bar.depth are both const (e.g. both are just int
members), the following should compile:
-----
int depth(in FooBar fb) {
return fb.visit!((Foo foo) => foo.depth,
(Bar bar) => bar.depth);
}
-----
However, it was failing with:
std/variant.d(2246): Error: cannot implicitly convert expression (variant.peek())
of type const(Foo)* to Foo*
std/variant.d(2246): Error: cannot implicitly convert expression (variant.peek())
of type const(Bar)* to Bar*
This patch changes an explicit `T*` declaration to an `auto` declaration so
const types can be visited.
Commit: 82b98200953d38978aab70b567f0658f606bd520
https://github.com/D-Programming-Language/phobos/commit/82b98200953d38978aab70b567f0658f606bd520
Author: Dmitry Olshansky <dmitry.olsh at gmail.com>
Date: 2015-08-23 (Sun, 23 Aug 2015)
Changed paths:
M std/variant.d
Log Message:
-----------
Merge pull request #3549 from rcorre/variant-visit-inout-fix
Allow Variant.visit to support const types.
Compare: https://github.com/D-Programming-Language/phobos/compare/354778b43009...82b98200953d
More information about the phobos
mailing list