The three parameter Item constructor does not need to be explicit. The explicit keyword only has an effect for one parameter constructors (or constructors that can be called with one parameter because the others have default values).
Since you declare a three parameter constructor, the default constructor will not be implicitly defined, so it does not need to be explicitly deleted. There's no real harm in providing a default constructor, since you have initializers for all your members. Alternatively, since the only constructor you supply requires three parameters that initialize all three members of your class, you do not need to provide initializers for them (although doing so can lead to fewer problems in the future if this is expanded on).
The comparison operators should a be declared as const functions. The use of this-> in them is not necessary.
The output operator should take item as a reference to avoid making a copy.
The weight and profit functions assume that both provided vectors have the same size. The size used to end the loop can be stored in a variable to avoid potentially recomputing it every time.
In increment, predecrement should be used for iterators (--it_bit;) to avoid making an unnecessary copy. Have you considered using reverse iterators here (using vec.rbegin())?
The last for loop in main can use the range-for-loop (e.g. for (auto p: possible)).