Jaki mechanizm jest zaangażowany, jeśli po powrocie typów, które są constructible z list inicjująca, nie określił Wracam, podobnie jak w:powrocie initializer lista mechanizm
std::array<int, 3> make_array()
{
return { 1, 2, 3 };
}
zamiast
std::array<int, 3> make_array()
{
return std::array<int, 3>{ 1, 2, 3 };
}
Czy są jakieś kary za wydajność, jeśli zwrócę listę inicjalizatorów bez określenia typu? Czy faktycznie zwracam tablicę, która jest przekształcana w std::array
?
Wydaje się zbyt schludny być bez kary, prawda? ;-) Ale jestem pewien, że 'litb' jest poprawny. Jest to szczególnie użyteczne przy "jednolitej inicjalizacji": możemy używać tej notacji z niestandardowymi typami bez konieczności kodowania konstruktora wykonującego 'std :: initializer_list': kompilator domyślnie konwertuje listę usztywnioną do normalnego ctor. Tak więc, po powrocie zapisujemy powtórzenia pisania tego typu. –