return x.supported();
                    }));
            }
            [std::printf](http://en.cppreference.com/w/cpp/io/c/fprintf)("%td)\n", [std::distance](http://en.cppreference.com/w/cpp/iterator/distance)([std::begin](http://en.cppreference.com/w/cpp/iterator/begin)(co), [std::end](http://en.cppreference.com/w/cpp/iterator/end)(co)));
        }
        if (print.sort_by_date)
        {
            [std::vector](http://en.cppreference.com/w/cpp/container/vector)<CompilerFeature> v([std::begin](http://en.cppreference.com/w/cpp/iterator/begin)(co), [std::end](http://en.cppreference.com/w/cpp/iterator/end)(co));
            [std::stable_sort](http://en.cppreference.com/w/cpp/algorithm/stable_sort)(v.begin(), v.end(),
                [](CompilerFeature const& lhs, CompilerFeature const& rhs)
                {
                    return lhs.data() < rhs.data();
                });
            [std::for_each](http://en.cppreference.com/w/cpp/algorithm/for_each)(v.cbegin(), v.cend(), print_compiler_feature);
        }
        else
            [std::for_each](http://en.cppreference.com/w/cpp/algorithm/for_each)([std::begin](http://en.cppreference.com/w/cpp/iterator/begin)(co), [std::end](http://en.cppreference.com/w/cpp/iterator/end)(co), print_compiler_feature);
        [std::puts](http://en.cppreference.com/w/cpp/io/c/puts)("");
    }
     
    inline void show_latest()
    {
        auto latest_rev = []() -> int
        {
            return print.cxx29 ? 29 : print.cxx26 ? 26 : print.cxx23 ? 23 : print.cxx20 ? 20 :
                   print.cxx17 ? 17 : print.cxx14 ? 14 : print.cxx11 ? 11 : 98;
        };
        [std::vector](http://en.cppreference.com/w/cpp/container/vector)<CompilerFeature> latest;
        auto add = [&latest](CompilerFeature x)
        {
            auto i = [std::lower_bound](http://en.cppreference.com/w/cpp/algorithm/lower_bound)(latest.begin(), latest.end(), x);
            if (i == latest.end() or not (*i == x))
                latest.insert(i, x);
            else if (i->data() < x.data())
                i->data(x.data());
        };
        char text[64];
        latest.reserve(512); // max macros
        if (print.core_features)
        {   // preserve reverse revision insertion order!
            if (print.cxx29) [std::for_each](http://en.cppreference.com/w/cpp/algorithm/for_each)([std::begin](http://en.cppreference.com/w/cpp/iterator/begin)(cxx29_core), [std::end](http://en.cppreference.com/w/cpp/iterator/end)(cxx29_core), add);
            if (print.cxx26) [std::for_each](http://en.cppreference.com/w/cpp/algorithm/for_each)([std::begin](http://en.cppreference.com/w/cpp/iterator/begin)(cxx26_core), [std::end](http://en.cppreference.com/w/cpp/iterator/end)(cxx26_core), add);
            if (print.cxx23) [std::for_each](http://en.cppreference.com/w/cpp/algorithm/for_each)([std::begin](http://en.cppreference.com/w/cpp/iterator/begin)(cxx23_core), [std::end](http://en.cppreference.com/w/cpp/iterator/end)(cxx23_core), add);
            if (print.cxx20) [std::for_each](http://en.cppreference.com/w/cpp/algorithm/for_each)([std::begin](http://en.cppreference.com/w/cpp/iterator/begin)(cxx20_core), [std::end](http://en.cppreference.com/w/cpp/iterator/end)(cxx20_core), add);
            if (print.cxx17) [std::for_each](http://en.cppreference.com/w/cpp/algorithm/for_each)([std::begin](http://en.cppreference.com/w/cpp/iterator/begin)(cxx17_core), [std::end](http://en.cppreference.com/w/cpp/iterator/end)(cxx17_core), add);
            if (print.cxx14) [std::for_each](http://en.cppreference.com/w/cpp/algorithm/for_each)([std::begin](http://en.cppreference.com/w/cpp/iterator/begin)(cxx14_core), [std::end](http://en.cppreference.com/w/cpp/iterator/end)(cxx14_core), add);
            if (print.cxx11) [std::for_each](http://en.cppreference.com/w/cpp/algorithm/for_each)([std::begin](http://en.cppreference.com/w/cpp/iterator/begin)(cxx11_core), [std::end](http://en.cppreference.com/w/cpp/iterat