[SVN r86057]
[SVN r62595]
[SVN r53751]
Changed BOOST_CONCEPT_WHERE to BOOST_CONCEPT_REQUIRES to be more consistent with the current C++0x proposal, which now uses a "requires" keyword in lieu of "where." Factored GCC workarounds into the BOOST_CONCEPT_USAGE macro. [SVN r40769]
macro is better than simply defining a destructor because usage patterns will be tested whenever associated types are accessed. [SVN r35198]