viewimage.php?id=3dafdf21f7d335ab67b1d1&no=24b0d769e1d32ca73cee84fa11d02831cd949b6924735c7cb75a680f5d9b0fd596a9804f8ffbdb005dae88655b93965fdadad4f4da4f36f384cc97da55efac3e8696b24a29afd2145aeb1e265b9c4695bdb578e2d01e59a823eb48ac2483e630192066fe8ed5



예를 들어, 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