Skip to content

Instantly share code, notes, and snippets.

@justinvh
Last active December 27, 2015 10:49
Show Gist options
  • Save justinvh/7314337 to your computer and use it in GitHub Desktop.
Save justinvh/7314337 to your computer and use it in GitHub Desktop.
template <class OutputIter, class = void>
class Foo;
template <class OutputIter>
class Foo<OutputIter, is_output_iterator<OutputIter>> {
/* some class with an output iterator */
};
#include <iterator>
#include <type_traits>
template <class Iter, class Tag>
using has_tag =
std::enable_if<
std::is_convertible<
typename std::iterator_traits<Iter>::iterator_category,
Tag>::value,
Iter>;
template <typename Iter>
using is_output_iterator = has_tag<Iter, std::output_iterator_tag>;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment