May 23, 2004 Failure to access enum in bolt-in's parameterising type | ||||
---|---|---|---|---|
| ||||
The following code gives boltinenum.cpp(25) : Error: 'sequence_type' must be a public base class of '?$sequence_wrapper@V?$sequence@D@@' which is obviously a bit of a problem. ;) template <typename C> class sequence { public: enum { files = 0x01 }; }; template <typename S> class sequence_wrapper { public: typedef S sequence_type; }; int main() { typedef sequence<char> sequence_t; typedef sequence_wrapper<sequence_t> wrapper_t; int f = wrapper_t::sequence_type::files; return f; } I know there's a simple workaround - by typedef'ing to an intermediate type from wrapper_t::sequence_type, and then accessing the enum value from there - but this is in highly-ported code, and it already contains more #ifdefs than the XP source. ;( |
Copyright © 1999-2021 by the D Language Foundation