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