Storing arrays as Variant types.
    Ali Çehreli via Digitalmars-d-learn 
    digitalmars-d-learn at puremagic.com
       
    Tue Dec 23 15:22:45 PST 2014
    
    
  
Minimal code for convenience to others:
import std.variant;
void main()
{
     Variant aVariant;
     Variant bVariant;
     char[] a = aVariant.coerce!(char[]);
     byte[] b = bVariant.coerce!(byte[]);
}
On 12/23/2014 02:57 PM, Winter M. wrote:
 > I've run into a problem while trying to coerce array values from a
 > variant; specifically,
 >
 > char[] a = aVariant.coerce!(char[]); // This works just fine.
 >
 > byte[] b = bVariant.coerce!(byte[]); // This causes a static assertion
 > to fail.
 >
 > I'm not really sure why a byte[] would be an unsupported type, since
 > memory-wise the reference should take up as much space as for the char[]
 > (as I understand it).
 > Perhaps I'm missing something, but I'm lost as to why this is the case.
The difference is that char[] passes the isSomeString test (as it is a 
string) but byte[] does not:
 
https://github.com/D-Programming-Language/phobos/blob/master/std/variant.d#L877
Ali
    
    
More information about the Digitalmars-d-learn
mailing list