Как получить значение по умолчанию любого типа

В C # я могу написать что-то вроде этого:

    class AnyThing
    {
        static public T Default = default(T);
    }

    static void Main ()
    {
        int i = AnyThing.Default;
        Console.WriteLine (i==0);
        string s = AnyThing.Default;
        Console.WriteLine (s == null);

    }

Я намерен написать словарь, как шаблон класса в C ++, яМне нравится, когда dict возвращает значение по умолчанию (обнуление) общего типа TVal, если данный ключ не найден. В C # стандартная (T) конструкция приходит на помощь, в то время как в C ++ I 'Я не уверен, что является подходящим способом сделать то же самое.

мы пыталисьT obj = {} а такжеT* obj = {} с gcc4.7 работает хорошо. Я'Я просто не уверен, что это синтаксис, определенный в спецификации языка, если этот код будет переносимым кросс-компилятором и платформой. Пожалуйста, помогите мне с моим doudt! Заранее спасибо!

PS:

~~~~~~~~~~

Чтобы убедиться, что шаблон получает значение по умолчанию (обнуляется) ЛЮБОГО типа, даже тех, которые неу меня нет вызываемого по умолчанию ctor, я использовал следующий механизм (вдохновленный avakar 'с ответом):

template
struct AnyThing
{
    static const T& Default ;
private:
    static const char temp[sizeof(T)];
};

template const char AnyThing::temp[] = {};
template const T& AnyThing::Default =  *(T*)temp;

struct st
{
    double data;
    st()=delete;
};

int main()
{
    cout < (int)AnyThing

Ответы на вопрос(4)

Ваш ответ на вопрос