程序员小x2024年2月27日小于 1 分钟

#include <type_traits>

struct input_iterator_tag {};
struct output_iterator_tag {};
struct forward_iterator_tag : public input_iterator_tag {};
struct bidirectional_iterator_tag : public forward_iterator_tag {};
struct random_access_iterator_tag : public bidirectional_iterator_tag {};

void advance_dispatch_bid()
{
    //
}

// advance 的 random_access_iterator_tag 的版本
void advance_dispatch_random()
{
    //
}

template <class Type>
void advance()
{
     if constexpr(std::is_same_v<Type, random_access_iterator_tag>) 
        return advance_dispatch_random( );
    else
        return advance_dispatch_bid();
}


int main()
{
    advance<random_access_iterator_tag>();
}
Loading...