Что такое С++/CLI, эквивалентный С# default (T)?

Я работаю с некоторым кодом С++/CLI (новый синтаксис) и пытаюсь объявить общий тип и хочу установить для него переменную-член.

В С#:

class Class<T>
{ 
    T member = default(T);
}

Что эквивалентно в CLI?

generic<typename T> public ref class Class 
{
public:
    Class() : member(default(T))  // <-- no worky
    {
    }    
private:
        T member;
};

Ответы

Ответ 1

Интересно, что синтаксис выглядит так: T(). Это требует добавления конструктора копирования.

generic<typename T> 
    public ref class Class 
{
public:
    Class() : member(T())  
    {
    } 

    Class(Class^ c)
    {
        member = c->member;
    }

private:
    T member;
};

Edit DOH Это тоже работает (был на С# на земле так долго, что я забыл, что NULL и 0 - это то же самое на С++, отсюда нет необходимости в разных значениях значения и ссылочного типа по умолчанию):

generic<typename T> 
    public ref class Class 
{
public:
    Class() : member(0)  
    {
    } 

    Class(Class^ c)
    {
        member = c->member;
    }

private:
    T member;
};

Ответ 2

Но не является ли частный член уже инициализирован конструктором по умолчанию?