C++11 представляет объект с именем std::ignore
:
const /* unspecified */ ignore;
Для краткости пусть
typedef decltype(std::ignore) T;
Насколько я могу судить, единственным требованием для T
является то, что это CopyAssignable
из-за спецификации std::tie
[C++11, 20.4.2.4:7].
В g++-4.8 я обнаружил, что T
дополнительно DefaultConstructible
(например, T x;
компилируется). Это поведение, определяемое реализацией?
(Если есть другие требования к T
, которые я пропустил, уточните, пожалуйста.)
std::copy_if
, когда входные итераторы являются zip-итераторами, а выходной итератор — zip-итератором с подмножеством элементов кортежа (входных). Мне было интересно, что произойдет, если итератор zip с элементамиignore
d будет использоваться какInputIterator
, потому что возвращаемое значениеoperator*
должно быть преобразовано в кортеж, содержащий объект типаT
. (Возможно,DefaultConstructible
ity является более сильным требованием, чем необходимо.) - person nknight   schedule 23.05.2013