// (C) Copyright John Maddock 2000. // Permission to copy, use, modify, sell and // distribute this software is granted provided this copyright notice appears // in all copies. This software is provided "as is" without express or implied // warranty, and with no claim as to its suitability for any purpose. // See http://www.boost.org for most recent version including documentation. #include #include #include #include #include template RandomAccessIterator foo(RandomAccessIterator from, RandomAccessIterator) { // this template can only be used with // random access iterators... typedef typename std::iterator_traits< RandomAccessIterator >::iterator_category cat; BOOST_STATIC_ASSERT((boost::is_convertible::value)); // // detail goes here... return from; } // ensure that delayed instantiation compilers like Comeau see the failure early // enough for "compile-fail" testing with the Boost.Build testing framework. (Greg Comeau) template std::list::iterator foo(std::list::iterator, std::list::iterator); int main() { std::deque d; std::list l; foo(d.begin(), d.end()); // OK foo(l.begin(), l.end()); // error return 0; }