template<typename _InputIterator, typename _Tp, typename _BinaryOperation>
inline _Tp
accumulate(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOperation __binary_op)
{
// concept requirements
__glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
__glibcxx_requires_valid_range(__first, __last);
for (; __first != __last; ++__first)
__init = __binary_op(__init, *__first);
return __init;
}
私はstlライブラリの蓄積関数の定義を調べました。 は、ここで私はこのように定義されている2つのマクロ__glibcxx_function_requiresと__glibcxx_requires_valid_range、実測値:__glibcxx_function_requiresマクロと__glibcxx_requires_valid_rangeマクロはどのように機能しますか?
#define __glibcxx_function_requires(...)
# define __glibcxx_requires_valid_range(_First,_Last)
あなたは私を説明することができますしてください、彼らは仕事と、彼らが何をしているのか?