Мне бы очень хотелось задать преднамеренно субъективный вопрос здесь, но у меня нет никого, кто мог бы задать это прямо ...C++: использовать auto или typedef?
Я пытаюсь «привести пример» в своей команде, приняв более современные концепции C++ в новом коде я пишу. Мои коллеги немного застенчивы от шаблонов и заставляют писать unique_ptr<Foobar>
или shared_ptr<Foobar>
вместо Foobar*
при использовании некоторых классов, которые я недавно создал (фабричные методы возвращают unique_ptr
и хранят списки этих объектов в векторах, используя shared_ptr
).
Они скрутили мою руку и убедили меня напечатать их во что-то более легкое для ввода, например FoobarUniquePtr
.
Но теперь я в беспорядке const-correctness с этими typedefs. Я должен был бы определить дополнительные typedefs для каждого типа const и non const, а const const_FoobarUniquePtr
, похоже, не корректно выражает семантику const.
Итак, на мой вопрос, имеет ли смысл прекратить использование этих typedefs и вместо этого загружать auto
у моих товарищей по команде, когда они жалуются на необходимость ввода шаблонных умных указателей? Я также открыт для других альтернатив.
+1 за попытку заставить ваших сотрудников использовать более современные методы! – Nick
Так же проблема с 'unique_ptr' или 'const unique_ptr '? –
Useless
звучит как авто, созданный только для этого типа вещей. его хороший ярлык, позволяющий вам просто поставить auto вместо того, чтобы выяснить, какой тип вам нужно использовать для переменной. когда вы спрашиваете, имеет ли это смысл, ну, его часть языкового стандарта и использование его таким образом звучит «правильно» для меня. Но, конечно, некоторые личные предпочтения могут возникнуть в нем, так как я могу предположить, что некоторые могут утверждать, что они предпочитают видеть явный тип в любом месте, где он используется, и не полагаться на авто. Но помимо личных предпочтений, это похоже на правильное использование. – Nerdtron