Библиотека планирует C++ 0x?

set используется для присвоения ссылки на объект. Эквивалент C был бы

 int i;
int* ref_i;

i = 4; // Assigning a value (in VBA: i = 4)
ref_i = &i; //assigning a reference (in VBA: set ref_i = i)
8
задан hannson 3 August 2009 в 17:16
поделиться

5 ответов

Лямбды уже очень хорошо вписываются в существующие библиотеки - везде, где функция принимает объект функции типа, заданного параметром шаблона.

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

Очевидно, что библиотека лямбда-выражения boost становится избыточной, но это означает, что она не требует добавления каких-либо новых функций.

6
ответ дан 5 December 2019 в 12:11
поделиться

Большинство библиотек используют стандартные указатели на функции для обратных вызовов. Лямбда-выражения C ++ 0x можно использовать в качестве указателей на функции, поэтому большинство библиотек не нужно изменять. Другие библиотеки используют шаблоны, поэтому они могут принимать любой вызываемый объект (например, std :: foreach не нужно изменять).

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

0
ответ дан 5 December 2019 в 12:11
поделиться

Я не понимаю, как использование лямбда зависит от поддержки библиотеками. Лямбда-выражения избавляют от необходимости создавать множество классов только для того, чтобы обернуть различные небольшие алгоритмы и аккуратно согласовать их с другими функциями языка / библиотеки (на ум приходит std :: function ). Где бы вы ни передавали либо объект функции, либо указатель на функцию, также можно использовать лямбды.

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

4
ответ дан 5 December 2019 в 12:11
поделиться

Скорее всего, такие библиотеки будут ждать, пока компилятор не получит надлежащую поддержку соответствующих функций C ++ 0x, и не будут сильно беспокоиться об этом, пока основные компиляторы не будут поддерживать их. Не задерживайте дыхание.

3
ответ дан 5 December 2019 в 12:11
поделиться

Это НЕ верно, вы не можете заменить boost :: lambda на C ++ 0x lambda. См. здесь по некоторым причинам (о привязке ускорения, но я думаю, что большая часть из них передается)

Кроме того, @daniel этот может помочь вам начать использовать лямбда-функции / привязку ускорения для слоты. Это делает мою жизнь невероятно легкой.

Кроме того, @litb из моих источников, лямбды не будут изменены (argh)

1
ответ дан 5 December 2019 в 12:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: