2014-09-25 2 views
2

Когда я определяю кортеж как std::tuple<int, char> foo; Где внутри класса хранятся значения int и char? Я ищу объяснение терминов непрофессионала.Где кортеж хранит данные?

+0

Его конкретная реализация. Входите в свой '' и узнайте. В каждом случае, который я когда-либо видел, они выполняются посредством вариационного расширения с одним типом/типом/индексом/индексом на уровень расширения. – WhozCraig

ответ

1

Если вы потратите время на его переваривание, то GNU implementation на самом деле является достойным примером рекурсивного наследования с использованием вариативных шаблонов C++ 0x. Это не предмет, который легко поддается объяснению непрофессионала, и его лучше понимать, читая код снова и снова, пока это не имеет смысла.

Из того, что я вижу, они наследуют вверх для каждого последующего типа в списке типов кортежей с каждым унаследованным классом, беря на себя управление хранилищем для этого типа, пока рекурсия не попадет в конец списка типов.

+0

Рекурсивное наследование было ответом на мой вопрос! Спасибо! – Semirix

1

Где угодно, на самом деле. Я имею в виду, это детализация реализации. Но я бы сказал, что все реализации в конечном итоге сводятся к членам данных с автоматической продолжительностью хранения внутри объекта tuple. Если вам действительно интересно, вы можете изучить исходный код реализации стандартных библиотек с открытым исходным кодом (например, libc++ и libstdc++) или реализацию, используемую вашим компилятором.

Смежные вопросы