Ensure queue is in ascending order
Queues are not designed to be used like this.  Your iterable_queue clearly shows that you are not using queues the way they are supposed to be used.  And the checkValidity function should be simplified with std::is_sorted from the standard library.  In q.empty() || q.size() &lt;= 1, the first condition is subsumed by the second.  The while(q.size()){ loop also seems to have no significance.  ++q.end() is also undefined behavior.  The bool_cast functionality is already provided by std::boolalpha.

Overall, I think you are seriously over-complicating everything:

#include &lt;algorithm&gt;
#include &lt;iostream&gt;
#include &lt;iterator&gt;
#include &lt;vector&gt;

int main()
{
    std::vector&lt;int&gt; numbers;
    for (int num; std::cin &gt;&gt; num &amp;&amp; num &gt;= 0;) {
        numbers.push_back(num);
    }

    bool valid = numbers.size() &gt; 1 &amp;&amp; std::is_sorted(numbers.begin(), numbers.end());
    std::cout &lt;&lt; "Valid? " &lt;&lt; std::boolalpha &lt;&lt; valid &lt;&lt; '\n';

    std::cout &lt;&lt; "{ ";
    for (int num : numbers) {
        std::cout &lt;&lt; num &lt;&lt; ' ';
    }
    std::cout &lt;&lt; "}\n";
}


(live demo)