Pytania oznaczone «auto»

Słowo kluczowe `auto` zostało zmienione w C ++ 11 dla wywnioskowanego typu. Gdy jest używany do zastępowania nazwy typu w zainicjowanej deklaracji zmiennej, zmienna otrzymuje ten sam typ, co inicjator. Gdy jest używany jako typ zwracany, typ zwracany jest określany jako końcowy typ zwracany lub wywnioskowany z wyrażenia zwracanego.

168
Co mówi nam auto &&?

Jeśli czytasz kod, taki jak auto&& var = foo(); gdzie foojest dowolna funkcja zwracająca wartość typu T. Następnie varjest lwartość typu rwartość odniesienia do T. Ale co to oznacza var? Czy to oznacza, że ​​wolno nam kraść zasoby var? Czy są jakieś rozsądne sytuacje, w których powinieneś...

151
Jakie są zastosowania decltype (auto)?

На этот вопрос есть ответы на Stack Overflow на русском : Конструкция decltype (auto) W języku c ++ 14 wprowadzono decltype(auto)idiom. Zwykle służy do zezwalania autodeklaracjom na używanie decltypereguł dla danego wyrażenia . Szukając przykładów „dobrego” użycia...

145
Automatyczne słowo kluczowe C ++. Dlaczego to magia?

Z całego materiału, którego używałem do nauki C ++, autozawsze był dziwny specyfikator czasu przechowywania, który nie służył żadnemu celowi. Ale niedawno napotkałem kod, który używał go jako nazwy typu. Spróbowałem z ciekawości i przyjmuje on rodzaj tego, co mu przydzielę! Nagle iteratory STL i,...

139
Dlaczego mogę używać auto na typie prywatnym?

Byłem w jakiś sposób zaskoczony, że poniższy kod kompiluje się i działa (vc2012 i gcc4.7.2) class Foo { struct Bar { int i; }; public: Bar Baz() { return Bar(); } }; int main() { Foo f; // Foo::Bar b = f.Baz(); // error auto b = f.Baz(); // ok std::cout << b.i; } Czy to prawda, że...

128
operator strzałki (->) w nagłówku funkcji

Natknąłem się na następujący kod: template <typename T, typename T1> auto compose(T a, T1 b) -> decltype(a + b) { return a+b; } Nie mogę zrozumieć jednej rzeczy: Gdzie mogę się dowiedzieć, co oznacza operator strzałki ( ->) w nagłówku funkcji? Myślę, że czysto logicznie, że...

125
Dlaczego auto a = 1; skompilować w C?

Kod: int main(void) { auto a=1; return 0; } jest kompilowany bez błędów przez kompilator MS Visual Studio 2012, gdy plik ma rozszerzenie .c. Zawsze uważałem, że kiedy używasz rozszerzenia .c, kompilacja powinna być zgodna ze składnią C, a nie C ++. Ponadto, o ile wiem, auto bez typu jest...

124
Lambda powraca: czy to legalne?

Rozważ ten dość bezużyteczny program: #include <iostream> int main(int argc, char* argv[]) { int a = 5; auto it = [&](auto self) { return [&](auto b) { std::cout << (a + b) << std::endl; return self(self); }; }; it(it)(4)(6)(42)(77)(999); } Zasadniczo próbujemy...

114
Jak działa generyczna lambda w C ++ 14?

Jak działa generyczna lambda ( autosłowo kluczowe jako typ argumentu) w standardzie C ++ 14? Czy jest oparty na szablonach C ++, w których dla każdego innego typu argumentu kompilator generuje nową funkcję o tej samej treści, ale zastępowanych typach (polimorfizm w czasie kompilacji), czy jest...

113
Czy w Javie istnieje automatyczne wnioskowanie typu?

Czy autow Javie istnieje typ zmiennej, taki jak w C ++? Przykład: 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(); Wiem, że w Javie istnieje ulepszona pętla for, ale czy istnieje...

88
C ++ auto & vs auto

Czy podczas tworzenia zmiennych lokalnych należy używać (const) auto&lub auto? na przykład: SomeClass object; const auto result = object.SomeMethod(); lub const auto& result = object.SomeMethod(); Gdzie SomeMethod () zwraca wartość inną niż pierwotna - być może inny typ zdefiniowany...

80
Dlaczego muszę wyraźnie wpisać słowo kluczowe „auto”?

Przechodzę w kierunku C ++ 11 z C ++ 98 i zapoznałem się ze autosłowem kluczowym. Zastanawiałem się, dlaczego musimy jawnie zadeklarować, autoczy kompilator może automatycznie wydedukować typ. Wiem, że C ++ jest językiem silnie typizowanym i jest to reguła, ale czy nie można było osiągnąć tego...

16
typ zwracany std :: pair <auto, auto>

Grałem około z autow std::pair. W poniższym kodzie funkcja fpowinna zwracać std::pairtypy zależne od parametru szablonu. Przykład roboczy: PRZYKŁAD 1 template <unsigned S> auto f() { if constexpr (S == 1) return std::pair{1, 2}; // pair of ints else if constexpr (S == 2) return...