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

EP>Если нужно ближе к исходной задаче, то что-то типа:

EP>
EP>void f(int a,int b,int c)
EP>{
EP>   cout << a << " " << b << " " << c << endl;
EP>}
EP>int main()
EP>{
EP>    auto &&d=defaults(f,11,22,33);
EP>    d();
EP>    d(1);
EP>    d(2,3);
EP>    d(3,4,5);
EP>}
EP>{
EP>    function<void(int,int,int)> general_case{f};
EP>    auto &&d=defaults_n<3>(general_case,11,22,33);
EP>    d();
EP>    d(1);
EP>    d(2,3);
EP>    d(3,4,5);
EP>}
EP>


Круто! Осталось только поддержать две вещи
— обязательные параметры
— ленивое вычисление необязательных

Это можно сделать, введя два особых типа, и обрабатывая эти типы соответственно.
auto&& d = defaults(f, mandatory, mandatory, ondemand( []()->int { foo()+bar() } )); // первые два обязательные, третий вычисляется каждый раз
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.