is there a cleaner way to new a static sized array?

FeepingCreature default_357-line at yahoo.de
Wed Feb 24 20:52:18 PST 2010


On 24.02.2010 22:19, BCS wrote:
> Hello FeepingCreature,
> 
>> On 24.02.2010 05:16, BCS wrote:
>>
>>> I need a function that works like the following:
>>>
>>>> T* New(T)() { return new T; }
>>>>
>>> But that also works with static arrays:
>>>
>>>> auto i = New!(int)();
>>>> auto a = New!(int[27])();
>>> The cleanest solution I can think of is:
>>>
>>>> T* New(T)() { return (new T[1]).ptr; }
>>>>
>>> but that seems ugly. Any ideas?
>>>
>> The example you listed is the best way.
>>
> 
> As it happes, it dosn't work as shown:
> 
> auto o = New!(Object)(); // oops, typeof(o) == Object*
> 
>> I'm sorry.
>>

I assumed that was what you wanted.

Maybe you should just special-case static arrays inside the function with static if.


More information about the Digitalmars-d-learn mailing list