#include <iostream>#include <concepts>#include <iterator>#include <memory>#include <vector>template<std::output_iterator<int>I>voidf(constchar*name){std::cout<<name<<" is output_iterator<int>"<<std::endl;}template<typenameI>voidf(constchar*name){std::cout<<name<<" is not output_iterator<int>"<<std::endl;}structsample_output_iterator{friendautooperator++(sample_output_iterator&)->sample_output_iterator&;friendautooperator++(sample_output_iterator&,int)->sample_output_iterator;friendautooperator*(constsample_output_iterator&)->int&;usingdifference_type=int;};intmain(){f<int*>("int*");f<std::vector<int>::iterator>("std::vector<int>::iterator");f<std::ostream_iterator<int>>("std::ostream_iterator<int>");f<sample_output_iterator>("sample_output_iterator");std::cout<<"\n";f<constint*>("const int*");f<std::istream_iterator<int>>("std::istream_iterator<int>");f<int*const>("int* const");}
出力
int* is output_iterator<int>
std::vector<int>::iterator is output_iterator<int>
std::ostream_iterator<int> is output_iterator<int>
sample_output_iterator is output_iterator<int>
const int* is not output_iterator<int>
std::istream_iterator<int> is not output_iterator<int>
int* const is not output_iterator<int>
You are visitor 01402503 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.