Std :: to_array отличается от прямой инициализацииC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Std :: to_array отличается от прямой инициализации

Сообщение Anonymous »

Первоначально я думал, что std :: to_array будет эквивалентно инициализации напрямую, то есть способ избежать необходимости указать длину массива в коде, сравните:

Код: Выделить всё

constexpr auto arr = std::to_array({'f', 'o', 'o'});
< /code>
to: < /p>
constexpr std::array arr{'f', 'o', 'o'};
Но сгенерированная сборка, а также расположение этих данных в двоичном режиме различаются. Это раздражает, чтобы соответствовать этому размеру точно точно с данными - похоже, компилятор может предупредить, слишком ли этот размер, но не слишком длинная.
Godbolt

Подробнее здесь: https://stackoverflow.com/questions/795 ... ialization
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»