2015-02-14 3 views
1

Если у вас есть довольно длинный тип, в shared_ptr, то какой самый простой способ вернуть эквивалент нулевого указателя? В C++ 03 я делал следующее, но мне интересно, внесли ли C++ 11 какие-то лучшие альтернативы?Самый простой способ создать пустой shared_ptr?

std::shared_ptr< 
    std::vector<std::pair<int, std::map<std::string, std::string>>> 
> getComplicatedType() 
{ 
    // Do some checks, can't create type, so return an empty shared_ptr 
    return std::shared_ptr< 
     std::vector<std::pair<int, std::map<std::string, std::string>>> 
    >(); 
} 

Я понимаю, что вы могли бы использовать typedef создать псевдоним для типа, но я ищу для более хорошего решения, где компилятор может вывести тип автоматически.

ответ

8

return nullptr;

Возможно немного более ясно, чем return {};

5
return {}; 

Это значение инициализирует тип возврата, который в случае интеллектуального указателя инициализирует его нулевым.

+0

Это выглядит как очень хорошее решение для общего случая. – Malvineous

+0

Для типов классов, для которых требуется неявный по умолчанию ctor. –

Смежные вопросы