Tango BitArray Initialization

Sean Kelly sean at f4.ca
Sun Feb 11 22:25:32 PST 2007

Colin Huang wrote:
> Sean Kelly Wrote:
>> I don't think this is legal in D.  In fact, the syntax is a huge problem 
>> in C++ because the parser often can't distinguish between a variable 
>> decl and a function prototype, and function prototypes take precedence. 
> Yeah, that got me really confused when I first started learning C++
>>   It may be uglier, but:
>>      BitArray b = BitArray( 1, 0, 1 );
>> is better than:
>>      BitArray b( 1, 0, 1 );
>> I only wish that the syntax worked for all stack variables.  ie.
>>      int x = int( 1 );
> Why is this useful? Isn't "int x = 1" enough?

Templates.  It still isn't perfect because classes can't be initialized 
this way, but:

     void buildAndCall(T, Call, Params...)( Call fn, Params p )
         T val = T( p );
         fn( val );

Probably a bad example, but you get the idea.  It's nice to be able to 
initialize everything using the same syntax.  I'd almost suggest:

     scope T val = new T( p );

as the "universal" scoped declaration syntax, but the presence of the 
'new' is not terribly ideal, even though it should work for classes as well.


More information about the Digitalmars-d-learn mailing list