Читая документацию по повысить любой а также экспериментальный любой,
Я не видел никаких упоминаний о стирание типа.
Я пытаюсь понять концепцию «стирания типа» в применении к C ++.
Правильно ли говорить, что «любой» тип использует «стирание типа» при хранении своих значений?
Правильно ли говорить, что он использует «полиморфизм» при хранении своих значений?
Является ли «стирание типа» своего рода «полиморфизмом»?
Статья в Википедии о полиморфизм, Также не упоминается «стирание типа».
Упоминается «подтип». Является ли «стирание типа» своего рода «подтипом»?
Извините, если этот вопрос кажется направленным в разные стороны.
Подвести итоги,
Как «стирание типа», «полиморфизм» и «подтип» относятся к любой типа в С ++?
Правильно ли говорить, что «любой» тип использует «стирание типа» при хранении своих значений?
Может быть, у меня и других людей есть другое определение «стирания типа», но с помощью стирание типа для реализации any
не имеет никакого смысла для меня. Если мы используем определение «представлять различные типы через один общий интерфейс», затем any
, std::function
и т.д. отвечают всем требованиям. википедия определение «обеспечение того, что выполнение программы во время выполнения не зависит от информации о типе» не имеет никакого смысла в контексте C ++. Обобщения (архетипический пример стирания типов) не означают «удаление типов из языка». Также, std::any
(опционально) использует RTTI. Так что я бы посмотрел в другом месте, кроме Википедии.
Правильно ли говорить, что он использует «полиморфизм» при хранении своих значений?
Полиморфизм является одним из способов реализации any
, Это не требуется ни в коем случае, однако. Насколько я могу судить, только Boost использует полиморфизм. Увидеть этот ответ.
Другие реализации показывают, что это не требуется:
Также см этот и сопровождающие вопрос
Является ли «стирание типа» своего рода «полиморфизмом»?
Нет. Рассматриваете ли вы шаблоны, дженерики и std::function
быть полиморфизмом?
Других решений пока нет …