Opened 21 years ago
Closed 17 years ago
#933 closed Bugs (Fixed)
Can't use BOOST_CLASS_REQUIRES macro
| Reported by: | ksvanhorn | Owned by: | jsiek |
|---|---|---|---|
| Milestone: | Component: | concept_check | |
| Version: | None | Severity: | |
| Keywords: | Cc: |
Description
The BOOST_CLASS_REQUIRES macro does not work correctly
when used outside of the boost namespace. For example,
if I write
template <typename RandIter>
class foo {
BOOST_CLASS_REQUIRES(RandIter,
boost::RandomAccessIteratorConcept);
...
};
I get a syntax error at the macro, because the
implementation of the macro assumes that the second
argument is an unqualified name.
A possible, but not terribly satisfactory, workaround
is to use a typedef; I would suggest that if you can't
find a good way to fix this problem, you should
document both the problem and its workaround.
Change History (4)
comment:2 by , 21 years ago
Logged In: YES user_id=32836 One option is to added a parameter to the macro for the namespace. I'm not all that crazy about that solution. Perhaps there's a better way...
comment:3 by , 21 years ago
Logged In: YES
user_id=32836
Here's an alternative to BOOST_CLASS_REQUIRES from Bjarne:
http://www.research.att.com/~bs/bs_faq2.html#constraints
// Here's how I'd adapt it into the boost concept checking
library
namespace boost {
template <class Concept>
struct class_requires {
class_requires() { function_requires<Concept>(); }
};
} // namespace boost
namespace foo {
template <class T>
struct Vector
: public boost::class_requires<
boost::SGIAssignableConcept<T> >
{
};
}// namespace foo
comment:4 by , 17 years ago
| Status: | assigned → closed |
|---|
Note:
See TracTickets
for help on using tickets.
