property_map_cc.cpp
来自「Boost provides free peer-reviewed portab」· C++ 代码 · 共 108 行
CPP
108 行
// (C) Copyright Jeremy Siek 2001.// Distributed under the Boost Software License, Version 1.0. (See// accompanying file LICENSE_1_0.txt or copy at// http://www.boost.org/LICENSE_1_0.txt)#include <boost/property_map.hpp>#include <map>// This file checks the property map concepts against the property map// archetypes to make sure they are consistent and that they compile.// This also checks all the property map classes defined in// property_map.hpp against the concept checking classes.intmain(){ using namespace boost; { typedef null_archetype<> Key; typedef assignable_archetype<copy_constructible_archetype<> > Value; typedef readable_property_map_archetype<Key, Value> PMap; function_requires<ReadablePropertyMapConcept<PMap, Key> >(); } { typedef null_archetype<> Key; typedef assignable_archetype<copy_constructible_archetype<> > Value; typedef writable_property_map_archetype<Key, Value> PMap; function_requires<WritablePropertyMapConcept<PMap, Key> >(); } { typedef null_archetype<> Key; typedef assignable_archetype<copy_constructible_archetype<> > Value; typedef read_write_property_map_archetype<Key, Value> PMap; function_requires<ReadWritePropertyMapConcept<PMap, Key> >(); } { typedef null_archetype<> Key; typedef assignable_archetype<copy_constructible_archetype<> > Value; typedef lvalue_property_map_archetype<Key, Value> PMap; function_requires<LvaluePropertyMapConcept<PMap, Key> >(); } { typedef null_archetype<> Key; typedef assignable_archetype<copy_constructible_archetype<> > Value; typedef mutable_lvalue_property_map_archetype<Key, Value> PMap; function_requires<Mutable_LvaluePropertyMapConcept<PMap, Key> >(); } { typedef std::ptrdiff_t Key; typedef int* PMap; function_requires<Mutable_LvaluePropertyMapConcept<PMap, Key> >(); } { typedef std::ptrdiff_t Key; typedef const int* PMap; function_requires<LvaluePropertyMapConcept<PMap, Key> >(); } { typedef sgi_assignable_archetype<> Key; // ? typedef sgi_assignable_archetype<> Value; typedef random_access_iterator_archetype<Value> Iterator; typedef readable_property_map_archetype<Key, std::ptrdiff_t> IndexMap; typedef iterator_property_map<Iterator, IndexMap#ifdef BOOST_NO_STD_ITERATOR_TRAITS , Value, const Value&#endif > PMap; function_requires<LvaluePropertyMapConcept<PMap, Key> >(); } { typedef sgi_assignable_archetype<> Key; typedef sgi_assignable_archetype<> Value; typedef mutable_random_access_iterator_archetype<Value> Iterator; typedef readable_property_map_archetype<Key, std::ptrdiff_t> IndexMap; typedef iterator_property_map<Iterator, IndexMap#ifdef BOOST_NO_STD_ITERATOR_TRAITS , Value, Value&#endif > PMap; function_requires<Mutable_LvaluePropertyMapConcept<PMap, Key> >(); } { typedef sgi_assignable_archetype< less_than_comparable_archetype<> > Key; typedef default_constructible_archetype< sgi_assignable_archetype<> > Value; typedef std::map<Key, Value> Container; typedef associative_property_map<Container> PMap; function_requires<Mutable_LvaluePropertyMapConcept<PMap, Key> >(); } { typedef sgi_assignable_archetype< less_than_comparable_archetype<> > Key; typedef default_constructible_archetype< sgi_assignable_archetype<> > Value; typedef std::map<Key, Value> Container; typedef const_associative_property_map<Container> PMap; function_requires<LvaluePropertyMapConcept<PMap, Key> >(); } { typedef identity_property_map PMap; function_requires<ReadablePropertyMapConcept<PMap, int> >(); } { typedef dummy_property_map PMap; function_requires<ReadWritePropertyMapConcept<PMap, int> >(); } return 0;}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?