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.