Вопросы с тегом «auto»

Ключевое слово `auto` было перепрофилировано в C ++ 11 для выведенного типа. При использовании для замены имени типа в объявлении инициализированной переменной переменной присваивается тот же тип, что и инициализатору. При использовании в качестве типа возврата тип возврата указывается как завершающий тип возврата или выводится из выражения возврата.

230
Может ли использование C ++ 11 'auto' улучшить производительность?

Я понимаю, почему autoтип в C ++ 11 улучшает правильность и удобство обслуживания. Я читал, что это также может улучшить производительность ( почти всегда авто от Херба Саттера), но я упускаю хорошее объяснение. Как можно autoулучшить производительность? Кто-нибудь может привести пример?...

218
Сколько это слишком много с ключевым словом auto C ++ 11?

Я использовал новое autoключевое слово, доступное в стандарте C ++ 11 для сложных шаблонных типов, для которого, как мне кажется, оно было разработано. Но я также использую его для таких вещей, как: auto foo = std::make_shared<Foo>(); И более скептически для: auto foo = bla(); // where bla()...

168
Что auto && говорит нам?

Если вы читаете код, как auto&& var = foo(); где fooлюбая функция, возвращаемая по значению типа T. Тогда varlvalue типа rvalue ссылается на T. Но для чего это нужно var? Значит ли это, что нам разрешено воровать ресурсы var? Существуют ли разумные ситуации, когда вы должны использовать,...

151
Ключевое слово C ++ auto. Почему это волшебство?

Из всего материала, который я использовал для изучения C ++, autoвсегда был странный спецификатор продолжительности хранения, который не служил никакой цели. Но совсем недавно я столкнулся с кодом, который использовал его как имя типа само по себе. Я из любопытства попробовал, и он предполагает...

151
Каковы некоторые виды использования decltype (auto)?

На этот вопрос есть ответы на Stack Overflow на русском : Конструкция decltype (авто) В c ++ 14 decltype(auto)введена идиома. Обычно его используют для того, чтобы autoобъявления могли использовать decltypeправила для данного выражения . В поисках примеров «хорошего» использования идиомы я могу...

143
Есть ли обратная сторона в объявлении переменных с auto в C ++?

Похоже, что это autoбыла довольно значительная особенность, которая должна быть добавлена ​​в C ++ 11, которая, кажется, следует за многими новыми языками. Как и в языке, подобном Python, я не видел явного объявления переменных (я не уверен, возможно ли это с использованием стандартов Python). Есть...

142
Какого типа лямбда-выражения выводятся с помощью «auto» в C ++ 11?

У меня было ощущение, что тип лямбда - это указатель на функцию. Когда я выполнил следующий тест, я обнаружил, что это неправильно ( демо ). #define LAMBDA [] (int i) -> long { return 0; } int main () { long (*pFptr)(int) = LAMBDA; // ok auto pAuto = LAMBDA; // ok assert(typeid(pFptr) ==...

128
стрелка (->) в заголовке функции

Я наткнулся на следующий код: template <typename T, typename T1> auto compose(T a, T1 b) -> decltype(a + b) { return a+b; } Я не могу понять одного: Где я мог узнать, что означает стрелка operator ( ->) в заголовке функции? Я предполагаю чисто логически, что ->оператор определяет...

125
Почему auto a = 1; компилировать на C?

Код: int main(void) { auto a=1; return 0; } компилируется без ошибок компилятором MS Visual Studio 2012, если файл имеет расширение .c. Я всегда думал, что при использовании расширения .c компиляция должна выполняться в соответствии с синтаксисом C, а не C ++. Более того, насколько я знаю, auto без...

114
Как общая лямбда работает в C ++ 14?

Как работает универсальная лямбда ( autoключевое слово как тип аргумента) в стандарте C ++ 14? Основан ли он на шаблонах C ++, где для каждого другого типа аргумента компилятор генерирует новую функцию с тем же телом, но замененными типами (полиморфизм во время компиляции), или он больше похож на...

113
Есть ли автоматический вывод типа в Java?

Есть ли autoв Java такой тип переменной, как в C ++? Пример: for ( auto var : object_array) std::cout << var << std::endl; for( auto var : object_array) var.do_something_that_only_this_particular_obj_can_do(); Я знаю, что в Java есть расширенный цикл for, но есть ли автоматический? Если...

92
Должен ли стиль синтаксиса конечного возвращаемого типа стать по умолчанию для новых программ на C ++ 11? [закрыто]

Закрыто . Этот вопрос основан на мнении . В настоящее время он не принимает ответы. Хотите улучшить этот вопрос? Обновите вопрос, чтобы на него можно было ответить с помощью фактов и цитат, отредактировав этот пост . Закрыт 3 года назад . Уточните этот вопрос C ++ 11 поддерживает новый синтаксис...

88
C ++ auto и vs auto

При создании локальных переменных правильно использовать (const) auto&или auto? например: SomeClass object; const auto result = object.SomeMethod(); или const auto& result = object.SomeMethod(); Где SomeMethod () возвращает непримитивное значение - возможно, другой определяемый...

22
Инициализация переменной неизвестного типа через перегруженные конструкторы в C ++

Исходя из опыта работы с Python, я немного боролся с работой с типами в C ++. Я пытаюсь инициализировать переменную класса через один из нескольких перегруженных конструкторов, которые принимают разные типы в качестве параметров. Я прочитал, что использование autoключевого слова может быть...

22
'auto' как заполнитель аргумента шаблона для параметра функции

C ++ 20 позволяет использовать autoдля параметра типа функции. Позволяет ли он также использовать autoв качестве заполнителя аргумента шаблона (не похоже, но в духе C ++ 17 template <auto> в некотором смысле) для типа параметра функции? Итак, следующий код, предварительно C ++ 20:...

16
std :: pair <auto, auto> тип возвращаемого значения

Я играл с autoв std::pair. В приведенном ниже коде функция fдолжна возвращать std::pairтипы, которые зависят от параметра шаблона. Рабочий пример: Пример 1 template <unsigned S> auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return...

10
Несоответствующий вывод авто типов между различными компиляторами c ++

Итак, я пытаюсь реализовать точечный продукт ( https://en.wikipedia.org/wiki/Dot_product ) в какой-то разновидности современного C ++ и придумал следующий код: #include <iostream> template<class... Args> auto dot(Args... args) { auto a = [args...](Args...) { return [=](auto... brgs) {...