dizzy escreveu:
Seems CMake is violating ISO C++ then. You may not instantiate standard
library templates of incomplete types (for example, even "struct A {
std::auto_ptr<A> a; };" is invalid, C++0x will have an exception to that for
shared_ptr<>, but for the standard containers that surely is the rule).
It's not like that. You can instantiate a template with a incomplete
type as long as the template instantiation doesn't need the type's
definition, which is the case of shared_ptr (because of its type hiding
technique), but not with auto_ptr.
Example:
struct S;
template <class T> class A
{
T *ptr;
};
template <class T> class B
{
typedef typename T::value type;
};
A<S> a; // compiles fine
B<S> b; // error: invalid use of incomplete type 'struct S'
Regards,
rod
PS: sorry for being off-topic for this list
_______________________________________________
CMake mailing list
[email protected]
http://www.cmake.org/mailman/listinfo/cmake