Инициализация и назначение - PullRequest
1 голос
/ 06 апреля 2009

У меня есть некоторый «устаревший» код (который я не могу изменить, но я должен добавить к нему), который выглядит примерно так:

template<typename T> T Foo(T& target)
{
    //Assign to 'target', but never read from it before that.
    //Also, 'target' is going to be a POD-type.

    target = T();

    return target;
}

int main()
{
    float value = Foo(value);
}

Это кажется небезопасным (то есть, убедитесь, что target никогда не назначается до его использования), есть ли другие потенциально смертельные проблемы с интерфейсом такого типа?

1 Ответ

1 голос
/ 06 апреля 2009

Хорошо .. Если вы делаете код:

T value;

тогда значение получит его конструктор. Честно говоря, шаблон выглядит так, как будто конструктор вызывается дважды.

Кроме того, если T - просто старые данные, то летальная проблема, которая может возникнуть ...

Что именно вы беспокоитесь о происходящем?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...