Как устроен auto

Рейтинг: 2Ответов: 1Опубликовано: 08.06.2023

Заинтересовался природой auto, но почему-то по нему как-то скудновато информации, все говорят что с ним можно сделать, а не как устроен. Тогда я попытался изучить сам. Верно ли утверждение, что auto работает на этапе исполнения и создаёт переменную нужного типа, но тип она менять не может? Если да, то почему тогда не сделали auto который может принимать любой объект и по сути быть безтиповой переменной? Есть ли такое в плюсах? Если auto работает на этапе исполнения, есть ли такой же аналог, только на этапе компиляции, какой-нибудь директивой препроцессора(конечно при условии, что никакой неопределённости не будет в начении)?

Ответы

▲ 0Принят

auto работает на этапе компиляции. Для проверки передайте переменную этого типа туда, где фактический её тип не принимают. Получите ошибку компиляции. Беcтиповая переменная - это std::any. В вашем примере a имеет выведенный тип char. Он не меняется по ходу исполнения программы. При вызове f2() и f3 вы помещаете в переменную типа char то, что char'ом не является. Однако здесь возможно приведение типов, которое выполняется автоматически.