Forward declare an STL container?

Is it possible to forward declare an STL 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?

Answers


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?


Need Your Help

Python: How do I make a button freeze when I press it? - Tkinter

python button tkinter

This is a memory game where the user selects two buttons (cells). If the two words behind the cells match, the words stays visible else the cells goes hidden and u can't see the words behind them. ...

Installing Capicom without SelfReg: Wix Custom Actions Not Found (Err 2721)

installer wix windows-installer custom-action

After following the advice in this question successfully, I added a couple additional lines of code for another custom action. This one is intended to call regsvr32 on the copy of capicom which I've

MVC LINQ dynamic orderBy getting column type

asp.net-mvc linq dynamic-typing

I am trying to dynamically order a list of products.