Forward declare a standard container?
c++, header, std
Solution
Declaring `vector` in the `std` namespace is undefined behavior. So, your code might work, but it also might not, and the compiler is under no obligation to tell you when your attempt won't work. That's a gamble, and I don't know that avoiding the inclusion of a standard C++ header is worth that.
See the following comp.std.c++.moderated discussion:
forward declaring std::vector. Works, but is it legal and standard compliant?
Problem
Is it possible to forward declare an standard container in a header file? For example, take the following code: ``` #include <vector> class Foo { private: std::vector<int> container_; ... }; ``` I want to be able to do something like this: ``` namespace std { template <typename T> class vector; } class Foo { private: std::vector<int> container_; ... }; ``` Can this be done?