Re[4]: default arguments in typedef declarations
От: Evgeny.Panasyuk Россия  
Дата: 22.02.13 12:39
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, Evgeny.Panasyuk, Вы писали:


К>
К>auto&& d = defaults(f, mandatory, mandatory, ondemand( []()->int { foo()+bar() } )); // первые два обязательные, третий вычисляется каждый раз
К>


mandatory могут идти только в начале или вперемешку? "В начале" уже работает.

Для ленивых вычислений вырисовывается отличие от обычных defaults:
struct Data
{
    int v[16];
};
 
Data &f(Data &&d=Data())
{
    return d;
}
 
void use(Data &d)
{
    d.v[0]=1;//...
}
 
int main()
{
    use(f());
}

Тут заимствуется и возвращается память со стэка вызывающей функции.
В случае с defaults_set — такой финт не пройдёт. "Заимствование" должен делать первый operator() который вызывается.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.