Is it possible to empty a queue in O(1) time complexity?
Yes, but...
First, this answer assumes that "queue" means the data structure commonly found in books on the subject. The reason for this clarification is that the question mentions "standard data structures", and this phrasing can be used to mean "data structures in the C++ Standard Library". The queue structure in the Standard Library is std::queue, and it is not possible to empty a std::queue in O(1) time (barring optimizations by your compiler). The lack of a clear() method dooms any attempt, not to mention that no standard container is required to have an O(1) clear() method, not even in the special cases where it is theoretically possible.
Second, the straight-forward approach to getting O(1) clear time requires that the data stored in the queue can be disposed of without invoking a destructor. A trivially destructible type like int satisfies this, but std::unique_ptr<int> does not. So if your data is not too complex, yes, it is possible to empty some queues in O(1) time.
If you are willing to write a more complex implementation of a queue, it would be possible to empty a queue of complex data in O(1) time by deferring the invocations of destructors. However, be aware that this offloads work to other operations, and the delayed destruction might surprise users of your queue. The idea is that the queue would support having more memory allocated than is needed, it would track which part of that memory contains the current elements of the queue, and it would track which part of that memory needs to be destructed. The first two of these are common enough; the third is the extra complexity. You can empty such a queue in O(1) time, but the time complexity of the queue's destruction changes from linear in the current size of the queue to linear in the maximum size the queue had obtained. Also, adding an element to the queue might need to call a destructor of an old element, which does not change its time complexity, but could be a concern if element destruction is expensive. There's a trade-off.
In summary, a std::queue cannot be emptied in O(1) time, common queue implementations could support O(1) clear time for trivially destructible types, and a specialized queue implementation could get O(1) clear time by offloading work to other operations.
Or is it inherently O(n) because we need to remove each element individually?
For many implementations, including std::queue, emptying a queue is inherently O(n), but not because each element needs to be removed individually. It is because each element's destructor needs to be called.
For example, a std::queue can be emptied by swapping it with an empty queue (see How do I clear the std::queue efficiently?). This does not involve removing each element individually, but the net operation is still O(n) because the destruction of the previously-empty queue is O(n).
std::queueusesstd::dequeas the underlying container which also has O(1) enqueue and dequeue