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

К>Только в начале — вперемешку непонятно, как разруливать.


Я подумал про перетасовку. Например если только второй default = 111 то:
d(1,2);
d(1,2,3);

вывод:
1 111 2
1 2 3

по идее — реализуемо.

К>А, я протупил — у тебя в defaults перечисляются только последние, необязательные аргументы. А сколько спереди обязательных — это уже следствие из сигнатуры функции.


да, либо non-type template parameter в defaults_n (наверное количество аргументов у функтора можно вытащить через SFINAE).

EP>>Для ленивых вычислений вырисовывается отличие от обычных defaults:

EP>>Тут заимствуется и возвращается память со стэка вызывающей функции.
EP>>В случае с defaults_set — такой финт не пройдёт. "Заимствование" должен делать первый operator() который вызывается.
К>В порядке безумной идеи: а что, если к defauls::operator() в хвост подверстать необязательный аргумент какого-то специального типа, в котором и разместить все вычисленные на месте аргументы.
К>Что-то вот этакое
[...]
К>// где storage — это кортеж, чьи элементы конструируются не сразу, а во второй фазе;
К>// в роли storage<...> может пойти optional<tuple<...>>

Согласен, по идее должно взлететь
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.