Инициализация std::array в библиотеке stl
Почему при инициализации std::array необходимо задавать размер?
Ответы (1 шт):
Автор решения: αλεχολυτ
→ Ссылка
Начиная с C++17 размер можно не задавать:
#include <array>
int main() {
std::array<int, 2> a = {1,2}; // до C++17
std::array b = {1,2}; // С++17 и выше
}
Эта возможность основана на Class Template Argument Deduction (CTAD).
А в C++20 ещё добавили std::to_array, где можно при необходимости указать тип элементов, если он отличается от выведенного автоматически:
auto c = std::to_array<long>({1,2});
Размер при этом так же указывать не надо.