예를 들어, std::sort는 처음 두 인자가 랜덤 접근 반복자이기를 요구한다. 만약 인자가 반복자가 아니거나 다른 종류의 반복자인 경우 std::sort가 인자를 양방향 반복자로써 사용하려 할 때 에러가 발생한다
std::list l = {2, 1, 3}; std::sort(l.begin(), l.end());
콘셉트가 없는 일반적인 컴파일러 진단은 50줄이 넘어간다. 두 반복자의 뺄셈 표현식의 컴파일을 실패했다는 메시지부터 시작한다.
인스턴스화 과정에서 'void std::__sort(_RandomAccessIterator, _RandomAccessIterator, _Compare) [with _RandomAccessIterator = std::_List_iterator; _Compare = __gnu_cxx::__ops::_Iter_less_iter]': 에러: 찾을 수 없음 'operator-' (피연산자 타입은 'std::_List_iterator' and 'std::_List_iterator') std::__lg(__last - __first) * 2,
콘셉트가 사용된 경우, 에러는 호출 시점에 감지되어 보고될 수 있다.
error: cannot call function 'void std::sort(_RAIter, _RAIter) [with _RAIter = std::_List_iterator]' note: concept 'RandomAccessIterator()' was not satisfied
C++ 초보자를 접게 만드는 무자비한 템플릿 에러 ㅋㅋ 부스트 네트워크는 언제 포함됨?
몬라용
module은요