text: From: David Abrahams (dave_at_[hidden])
  Date: 2006-11-12 12:46:11
  Matthias Troyer <troyer_at_[hidden]> writes:
  > Hi Beman, hi all
  >
  > Due to recent changes to the filesystem library now, the header
  > detail/identifier.hpp is now included in my projects and contains the
  > dangerous code segment:
  Is it just dangerous by definition, because it breaks
  your code on your compiler, or is there something else about it that
  I'm missing?
  > template <class Ostream, class Id>
  > typename enable_if< is_base_of< identifier< typename
  > Id::value_type, Id >, Id >,
  > Ostream & >::type operator<<( Ostream & os, const Id & id )
  > {
  > return os << id.value();
  > }
  >
  > which breaks all of my codes, since I have a type Id, that has a type
  > member Id::value_type which is an abstract base class. My compiler
  > (Apple gcc-4.0) now tries to instantiate identifier< typename
  > Id::value_type, Id >, which fails because Id::value_type is abstract,
  > and the compiler aborts with an error message.
  Is that a compiler bug?
  Is your Id in namespace boost?
  > This causes all of our codes to fail to compile with the current CVS
  > head
  That's a problem.
  -- Dave Abrahams Boost Consulting
  Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk