Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Sm0ke, Вы писали:
А>....
А>может быть boost.tuple ?
А как в бусте генерируются туплы?
У меня так: return 1 += 5.5 += 'b' += end_tuple;
Re[3]: Удобная генерация tuple `ов
От:
Аноним
Дата:
25.09.07 11:43
Оценка:
Здравствуйте, Sm0ke, Вы писали:
S>Здравствуйте, Аноним, Вы писали:
А>>Здравствуйте, Sm0ke, Вы писали:
А>>....
А>>может быть boost.tuple ?
S>А как в бусте генерируются туплы?
S>У меня так: return 1 += 5.5 += 'b' += end_tuple;
S>Для начала что такое тупл: S>Короче говоря это картэж разнотипных значений. S>Обычно используют в качестве возвращаемого значения функций.
S>файл "typelist.h"
ИМО со списком типов нужно быть по осторожнее. Я было раз обжегся на этом когда VC7.1 падал с ошибкой IC на больших списках (~12 элементов). Самое обидное что на маленьких тестовых проектах все работает и проявляется только в большом проекте.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Здравствуйте, ArtDenis, Вы писали:
AD>Sm0ke пишет: >> >> У меня так: return 1 += 5.5 += 'b' += end_tuple;
AD>Слишком много лишних выражений, затрудняющих чтение и восприятие кода по AD>сравнению c чем-то типа cr_tuple(1, 5.5, 'b')
Здравствуйте, Sni4ok, Вы писали:
AJD>>ИМО со списком типов нужно быть по осторожнее. S>список типов это никак не тупл, а какой-нить контейнер из mpl, например boost::mpl::vector.
Я всегда думал что список типов более фундаментальное понятие чем контейнер из mpl.
"For every complex problem, there is a solution that is simple, neat,
and wrong."
Здравствуйте, zaufi, Вы писали:
Z>Здравствуйте, ArtDenis, Вы писали:
AD>>Sm0ke пишет: >>> >>> У меня так: return 1 += 5.5 += 'b' += end_tuple;
AD>>Слишком много лишних выражений, затрудняющих чтение и восприятие кода по AD>>сравнению c чем-то типа cr_tuple(1, 5.5, 'b')
Z>если уж г-ну Sm0ke хочеца извратом тада мож так:
Не очень. Такие вещи, как туплы должны быть в языке изначально ИМО.
Просто Ф-ция make_tuple() перегружена для ограниченного кол-ва аргументов. Z>
Z>return begin_tuple, 1, 5.5, 'b', end_tuple;
Z>
Z>
Два вопроса:
1. Это есть в бусте?
2. Если нет, то как вы это реализуете?
Ведь оператор запятая вычисляется слева-направо. Слишком много копирований будет. memcpy() не предлагать =)
Вот оператор += вычисляется справа-налево.
Здравствуйте, AndrewJD, Вы писали:
AJD>Здравствуйте, Sm0ke, Вы писали:
S>>Для начала что такое тупл: S>>Короче говоря это картэж разнотипных значений. S>>Обычно используют в качестве возвращаемого значения функций.
S>>файл "typelist.h"
AJD>ИМО со списком типов нужно быть по осторожнее. Я было раз обжегся на этом когда VC7.1 падал с ошибкой IC на больших списках (~12 элементов). Самое обидное что на маленьких тестовых проектах все работает и проявляется только в большом проекте.
Здравствуйте, Sni4ok, Вы писали:
S>Здравствуйте, AndrewJD, Вы писали:
AJD>>Я всегда думал что список типов более фундаментальное понятие чем контейнер из mpl.
S>разумеется, например Loki::Typelist тоже является списком типов, но вот boost::tuple, или же std::pair списком типов не являются.
В некоторых реализациях туплов используются списки типов.
В Loki точно используется. Насчёт boost::mpl не уверен...
з.ы. Моя пробная реализация туплов построена на списках.
Здравствуйте, Sm0ke, Вы писали:
AJD>>>Я всегда думал что список типов более фундаментальное понятие чем контейнер из mpl.
S>>разумеется, например Loki::Typelist тоже является списком типов, но вот boost::tuple, или же std::pair списком типов не являются.
S>В некоторых реализациях туплов используются списки типов.
ваша логика хромает, приведу пример, содержащий аналогичную логичную ошибку:
"boost::serialization использует boost::mpl, поэтому когда я использую boost::serialization, я занимаюсь метапрограммированием."
S>з.ы. Моя пробная реализация туплов построена на списках.