|
5805 | 5805 |
|
5806 | 5806 | \pnum
|
5807 | 5807 | The following exposition-only alias templates may appear in deduction guides for associative containers:
|
5808 |
| - |
5809 | 5808 | \begin{codeblock}
|
5810 | 5809 | template<class InputIterator>
|
5811 |
| - using iter_key_t = remove_const_t< |
5812 |
| - typename iterator_traits<InputIterator>::value_type::first_type>; // \expos |
| 5810 | + using @\placeholder{iter-value-type}@ = |
| 5811 | + typename iterator_traits<InputIterator>::value_type; // \expos |
| 5812 | +template<class InputIterator> |
| 5813 | + using @\placeholder{iter-key-type}@ = remove_const_t< |
| 5814 | + typename iterator_traits<InputIterator>::value_type::first_type>; // \expos |
5813 | 5815 | template<class InputIterator>
|
5814 |
| - using iter_val_t |
5815 |
| - = typename iterator_traits<InputIterator>::value_type::second_type; // \expos |
| 5816 | + using @\placeholder{iter-mapped-type}@ = |
| 5817 | + typename iterator_traits<InputIterator>::value_type::second_type; // \expos |
5816 | 5818 | template<class InputIterator>
|
5817 |
| - using iter_to_alloc_t |
5818 |
| - = pair<add_const_t<typename iterator_traits<InputIterator>::value_type::first_type>, |
5819 |
| - typename iterator_traits<InputIterator>::value_type::second_type>; // \expos |
| 5819 | + using @\placeholder{iter-to-alloc-type}@ = pair< |
| 5820 | + add_const_t<typename iterator_traits<InputIterator>::value_type::first_type>, |
| 5821 | + typename iterator_traits<InputIterator>::value_type::second_type>; // \expos |
5820 | 5822 | \end{codeblock}
|
5821 | 5823 |
|
5822 | 5824 | \rSec2[associative.map.syn]{Header \tcode{<map>} synopsis}
|
|
6188 | 6190 | pair<const_iterator, const_iterator> equal_range(const K& x) const;
|
6189 | 6191 | };
|
6190 | 6192 |
|
6191 |
| - template<class InputIterator, class Compare = less<iter_key_t<InputIterator>>, |
6192 |
| - class Allocator = allocator<iter_to_alloc_t<InputIterator>>> |
| 6193 | + template<class InputIterator, class Compare = less<@\placeholder{iter-key-type}@<InputIterator>>, |
| 6194 | + class Allocator = allocator<@\placeholder{iter-to-alloc-type}@<InputIterator>>> |
6193 | 6195 | map(InputIterator, InputIterator, Compare = Compare(), Allocator = Allocator())
|
6194 |
| - -> map<iter_key_t<InputIterator>, iter_val_t<InputIterator>, Compare, Allocator>; |
| 6196 | + -> map<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, Compare, Allocator>; |
6195 | 6197 |
|
6196 | 6198 | template<class Key, class T, class Compare = less<Key>,
|
6197 | 6199 | class Allocator = allocator<pair<const Key, T>>>
|
|
6200 | 6202 |
|
6201 | 6203 | template<class InputIterator, class Allocator>
|
6202 | 6204 | map(InputIterator, InputIterator, Allocator)
|
6203 |
| - -> map<iter_key_t<InputIterator>, iter_val_t<InputIterator>, |
6204 |
| - less<iter_key_t<InputIterator>>, Allocator>; |
| 6205 | + -> map<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, |
| 6206 | + less<@\placeholder{iter-key-type}@<InputIterator>>, Allocator>; |
6205 | 6207 |
|
6206 | 6208 | template<class Key, class T, class Allocator>
|
6207 | 6209 | map(initializer_list<pair<const Key, T>>, Allocator) -> map<Key, T, less<Key>, Allocator>;
|
|
6696 | 6698 | pair<const_iterator, const_iterator> equal_range(const K& x) const;
|
6697 | 6699 | };
|
6698 | 6700 |
|
6699 |
| - template<class InputIterator, class Compare = less<iter_key_t<InputIterator>>, |
6700 |
| - class Allocator = allocator<iter_to_alloc_t<InputIterator>>> |
| 6701 | + template<class InputIterator, class Compare = less<@\placeholder{iter-key-type}@<InputIterator>>, |
| 6702 | + class Allocator = allocator<@\placeholder{iter-to-alloc-type}@<InputIterator>>> |
6701 | 6703 | multimap(InputIterator, InputIterator, Compare = Compare(), Allocator = Allocator())
|
6702 |
| - -> multimap<iter_key_t<InputIterator>, iter_val_t<InputIterator>, Compare, Allocator>; |
| 6704 | + -> multimap<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, |
| 6705 | + Compare, Allocator>; |
6703 | 6706 |
|
6704 | 6707 | template<class Key, class T, class Compare = less<Key>,
|
6705 | 6708 | class Allocator = allocator<pair<const Key, T>>>
|
|
6708 | 6711 |
|
6709 | 6712 | template<class InputIterator, class Allocator>
|
6710 | 6713 | multimap(InputIterator, InputIterator, Allocator)
|
6711 |
| - -> multimap<iter_key_t<InputIterator>, iter_val_t<InputIterator>, |
6712 |
| - less<iter_key_t<InputIterator>>, Allocator>; |
| 6714 | + -> multimap<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, |
| 6715 | + less<@\placeholder{iter-key-type}@<InputIterator>>, Allocator>; |
6713 | 6716 |
|
6714 | 6717 | template<class Key, class T, class Allocator>
|
6715 | 6718 | multimap(initializer_list<pair<const Key, T>>, Allocator)
|
|
6991 | 6994 | };
|
6992 | 6995 |
|
6993 | 6996 | template<class InputIterator,
|
6994 |
| - class Compare = less<typename iterator_traits<InputIterator>::value_type>, |
6995 |
| - class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>> |
| 6997 | + class Compare = less<@\placeholder{iter-value-type}@<InputIterator>>, |
| 6998 | + class Allocator = allocator<@\placeholder{iter-value-type}@<InputIterator>>> |
6996 | 6999 | set(InputIterator, InputIterator,
|
6997 | 7000 | Compare = Compare(), Allocator = Allocator())
|
6998 |
| - -> set<typename iterator_traits<InputIterator>::value_type, Compare, Allocator>; |
| 7001 | + -> set<@\placeholder{iter-value-type}@<InputIterator>, Compare, Allocator>; |
6999 | 7002 |
|
7000 | 7003 | template<class Key, class Compare = less<Key>, class Allocator = allocator<Key>>
|
7001 | 7004 | set(initializer_list<Key>, Compare = Compare(), Allocator = Allocator())
|
7002 | 7005 | -> set<Key, Compare, Allocator>;
|
7003 | 7006 |
|
7004 | 7007 | template<class InputIterator, class Allocator>
|
7005 | 7008 | set(InputIterator, InputIterator, Allocator)
|
7006 |
| - -> set<typename iterator_traits<InputIterator>::value_type, |
7007 |
| - less<typename iterator_traits<InputIterator>::value_type>, Allocator>; |
| 7009 | + -> set<@\placeholder{iter-value-type}@<InputIterator>, |
| 7010 | + less<@\placeholder{iter-value-type}@<InputIterator>>, Allocator>; |
7008 | 7011 |
|
7009 | 7012 | template<class Key, class Allocator>
|
7010 | 7013 | set(initializer_list<Key>, Allocator) -> set<Key, less<Key>, Allocator>;
|
|
7258 | 7261 | };
|
7259 | 7262 |
|
7260 | 7263 | template<class InputIterator,
|
7261 |
| - class Compare = less<typename iterator_traits<InputIterator>::value_type>, |
7262 |
| - class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>> |
| 7264 | + class Compare = less<@\placeholder{iter-value-type}@<InputIterator>>, |
| 7265 | + class Allocator = allocator<@\placeholder{iter-value-type}@<InputIterator>>> |
7263 | 7266 | multiset(InputIterator, InputIterator,
|
7264 | 7267 | Compare = Compare(), Allocator = Allocator())
|
7265 |
| - -> multiset<typename iterator_traits<InputIterator>::value_type, Compare, Allocator>; |
| 7268 | + -> multiset<@\placeholder{iter-value-type}@<InputIterator>, Compare, Allocator>; |
7266 | 7269 |
|
7267 | 7270 | template<class Key, class Compare = less<Key>, class Allocator = allocator<Key>>
|
7268 | 7271 | multiset(initializer_list<Key>, Compare = Compare(), Allocator = Allocator())
|
7269 | 7272 | -> multiset<Key, Compare, Allocator>;
|
7270 | 7273 |
|
7271 | 7274 | template<class InputIterator, class Allocator>
|
7272 | 7275 | multiset(InputIterator, InputIterator, Allocator)
|
7273 |
| - -> multiset<typename iterator_traits<InputIterator>::value_type, |
7274 |
| - less<typename iterator_traits<InputIterator>::value_type>, Allocator>; |
| 7276 | + -> multiset<@\placeholder{iter-value-type}@<InputIterator>, |
| 7277 | + less<@\placeholder{iter-value-type}@<InputIterator>>, Allocator>; |
7275 | 7278 |
|
7276 | 7279 | template<class Key, class Allocator>
|
7277 | 7280 | multiset(initializer_list<Key>, Allocator) -> multiset<Key, less<Key>, Allocator>;
|
|
7356 | 7359 | \tcode{unordered_set} and \tcode{unordered_multiset}.
|
7357 | 7360 |
|
7358 | 7361 | \pnum
|
7359 |
| -The exposition-only alias templates \tcode{iter_key_t}, \tcode{iter_val_t}, and \tcode{iter_to_alloc_t} |
| 7362 | +The exposition-only alias templates \placeholder{iter-value-type}, |
| 7363 | +\placeholder{iter-key-type}, \placeholder{iter-mapped-type}, and \placeholder{iter-to-alloc-type} |
7360 | 7364 | defined in \ref{associative.general} may appear in deduction guides for unordered containers.
|
7361 | 7365 |
|
7362 | 7366 | \rSec2[unord.map.syn]{Header \tcode{<unordered_map>} synopsis}%
|
|
7694 | 7698 | };
|
7695 | 7699 |
|
7696 | 7700 | template<class InputIterator,
|
7697 |
| - class Hash = hash<iter_key_t<InputIterator>>, |
7698 |
| - class Pred = equal_to<iter_key_t<InputIterator>>, |
7699 |
| - class Allocator = allocator<iter_to_alloc_t<InputIterator>>> |
| 7701 | + class Hash = hash<@\placeholder{iter-key-type}@<InputIterator>>, |
| 7702 | + class Pred = equal_to<@\placeholder{iter-key-type}@<InputIterator>>, |
| 7703 | + class Allocator = allocator<@\placeholder{iter-to-alloc-type}@<InputIterator>>> |
7700 | 7704 | unordered_map(InputIterator, InputIterator, typename @\seebelow@::size_type = @\seebelow@,
|
7701 | 7705 | Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
7702 |
| - -> unordered_map<iter_key_t<InputIterator>, iter_val_t<InputIterator>, Hash, Pred, |
| 7706 | + -> unordered_map<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, Hash, Pred, |
7703 | 7707 | Allocator>;
|
7704 | 7708 |
|
7705 | 7709 | template<class Key, class T, class Hash = hash<Key>,
|
|
7711 | 7715 |
|
7712 | 7716 | template<class InputIterator, class Allocator>
|
7713 | 7717 | unordered_map(InputIterator, InputIterator, typename @\seebelow@::size_type, Allocator)
|
7714 |
| - -> unordered_map<iter_key_t<InputIterator>, iter_val_t<InputIterator>, |
7715 |
| - hash<iter_key_t<InputIterator>>, equal_to<iter_key_t<InputIterator>>, |
7716 |
| - Allocator>; |
| 7718 | + -> unordered_map<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, |
| 7719 | + hash<@\placeholder{iter-key-type}@<InputIterator>>, |
| 7720 | + equal_to<@\placeholder{iter-key-type}@<InputIterator>>, Allocator>; |
7717 | 7721 |
|
7718 | 7722 | template<class InputIterator, class Allocator>
|
7719 | 7723 | unordered_map(InputIterator, InputIterator, Allocator)
|
7720 |
| - -> unordered_map<iter_key_t<InputIterator>, iter_val_t<InputIterator>, |
7721 |
| - hash<iter_key_t<InputIterator>>, equal_to<iter_key_t<InputIterator>>, |
7722 |
| - Allocator>; |
| 7724 | + -> unordered_map<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, |
| 7725 | + hash<@\placeholder{iter-key-type}@<InputIterator>>, |
| 7726 | + equal_to<@\placeholder{iter-key-type}@<InputIterator>>, Allocator>; |
7723 | 7727 |
|
7724 | 7728 | template<class InputIterator, class Hash, class Allocator>
|
7725 | 7729 | unordered_map(InputIterator, InputIterator, typename @\seebelow@::size_type, Hash, Allocator)
|
7726 |
| - -> unordered_map<iter_key_t<InputIterator>, iter_val_t<InputIterator>, Hash, |
7727 |
| - equal_to<iter_key_t<InputIterator>>, Allocator>; |
| 7730 | + -> unordered_map<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, Hash, |
| 7731 | + equal_to<@\placeholder{iter-key-type}@<InputIterator>>, Allocator>; |
7728 | 7732 |
|
7729 | 7733 | template<class Key, class T, class Allocator>
|
7730 | 7734 | unordered_map(initializer_list<pair<const Key, T>>, typename @\seebelow@::size_type,
|
|
8230 | 8234 | };
|
8231 | 8235 |
|
8232 | 8236 | template<class InputIterator,
|
8233 |
| - class Hash = hash<iter_key_t<InputIterator>>, |
8234 |
| - class Pred = equal_to<iter_key_t<InputIterator>>, |
8235 |
| - class Allocator = allocator<iter_to_alloc_t<InputIterator>>> |
| 8237 | + class Hash = hash<@\placeholder{iter-key-type}@<InputIterator>>, |
| 8238 | + class Pred = equal_to<@\placeholder{iter-key-type}@<InputIterator>>, |
| 8239 | + class Allocator = allocator<@\placeholder{iter-to-alloc-type}@<InputIterator>>> |
8236 | 8240 | unordered_multimap(InputIterator, InputIterator,
|
8237 | 8241 | typename @\seebelow@::size_type = @\seebelow@,
|
8238 | 8242 | Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
8239 |
| - -> unordered_multimap<iter_key_t<InputIterator>, iter_val_t<InputIterator>, Hash, Pred, |
8240 |
| - Allocator>; |
| 8243 | + -> unordered_multimap<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, |
| 8244 | + Hash, Pred, Allocator>; |
8241 | 8245 |
|
8242 | 8246 | template<class Key, class T, class Hash = hash<Key>,
|
8243 | 8247 | class Pred = equal_to<Key>, class Allocator = allocator<pair<const Key, T>>>
|
|
8248 | 8252 |
|
8249 | 8253 | template<class InputIterator, class Allocator>
|
8250 | 8254 | unordered_multimap(InputIterator, InputIterator, typename @\seebelow@::size_type, Allocator)
|
8251 |
| - -> unordered_multimap<iter_key_t<InputIterator>, iter_val_t<InputIterator>, |
8252 |
| - hash<iter_key_t<InputIterator>>, |
8253 |
| - equal_to<iter_key_t<InputIterator>>, Allocator>; |
| 8255 | + -> unordered_multimap<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, |
| 8256 | + hash<@\placeholder{iter-key-type}@<InputIterator>>, |
| 8257 | + equal_to<@\placeholder{iter-key-type}@<InputIterator>>, Allocator>; |
8254 | 8258 |
|
8255 | 8259 | template<class InputIterator, class Allocator>
|
8256 | 8260 | unordered_multimap(InputIterator, InputIterator, Allocator)
|
8257 |
| - -> unordered_multimap<iter_key_t<InputIterator>, iter_val_t<InputIterator>, |
8258 |
| - hash<iter_key_t<InputIterator>>, |
8259 |
| - equal_to<iter_key_t<InputIterator>>, Allocator>; |
| 8261 | + -> unordered_multimap<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, |
| 8262 | + hash<@\placeholder{iter-key-type}@<InputIterator>>, |
| 8263 | + equal_to<@\placeholder{iter-key-type}@<InputIterator>>, Allocator>; |
8260 | 8264 |
|
8261 | 8265 | template<class InputIterator, class Hash, class Allocator>
|
8262 | 8266 | unordered_multimap(InputIterator, InputIterator, typename @\seebelow@::size_type, Hash,
|
8263 | 8267 | Allocator)
|
8264 |
| - -> unordered_multimap<iter_key_t<InputIterator>, iter_val_t<InputIterator>, Hash, |
8265 |
| - equal_to<iter_key_t<InputIterator>>, Allocator>; |
| 8268 | + -> unordered_multimap<@\placeholder{iter-key-type}@<InputIterator>, @\placeholder{iter-mapped-type}@<InputIterator>, Hash, |
| 8269 | + equal_to<@\placeholder{iter-key-type}@<InputIterator>>, Allocator>; |
8266 | 8270 |
|
8267 | 8271 | template<class Key, class T, class Allocator>
|
8268 | 8272 | unordered_multimap(initializer_list<pair<const Key, T>>, typename @\seebelow@::size_type,
|
|
8571 | 8575 | };
|
8572 | 8576 |
|
8573 | 8577 | template<class InputIterator,
|
8574 |
| - class Hash = hash<typename iterator_traits<InputIterator>::value_type>, |
8575 |
| - class Pred = equal_to<typename iterator_traits<InputIterator>::value_type>, |
8576 |
| - class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>> |
| 8578 | + class Hash = hash<@\placeholder{iter-value-type}@<InputIterator>>, |
| 8579 | + class Pred = equal_to<@\placeholder{iter-value-type}@<InputIterator>>, |
| 8580 | + class Allocator = allocator<@\placeholder{iter-value-type}@<InputIterator>>> |
8577 | 8581 | unordered_set(InputIterator, InputIterator, typename @\seebelow@::size_type = @\seebelow@,
|
8578 | 8582 | Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
8579 |
| - -> unordered_set<typename iterator_traits<InputIterator>::value_type, |
| 8583 | + -> unordered_set<@\placeholder{iter-value-type}@<InputIterator>, |
8580 | 8584 | Hash, Pred, Allocator>;
|
8581 | 8585 |
|
8582 | 8586 | template<class T, class Hash = hash<T>,
|
|
8587 | 8591 |
|
8588 | 8592 | template<class InputIterator, class Allocator>
|
8589 | 8593 | unordered_set(InputIterator, InputIterator, typename @\seebelow@::size_type, Allocator)
|
8590 |
| - -> unordered_set<typename iterator_traits<InputIterator>::value_type, |
8591 |
| - hash<typename iterator_traits<InputIterator>::value_type>, |
8592 |
| - equal_to<typename iterator_traits<InputIterator>::value_type>, |
| 8594 | + -> unordered_set<@\placeholder{iter-value-type}@<InputIterator>, |
| 8595 | + hash<@\placeholder{iter-value-type}@<InputIterator>>, |
| 8596 | + equal_to<@\placeholder{iter-value-type}@<InputIterator>>, |
8593 | 8597 | Allocator>;
|
8594 | 8598 |
|
8595 | 8599 | template<class InputIterator, class Hash, class Allocator>
|
8596 | 8600 | unordered_set(InputIterator, InputIterator, typename @\seebelow@::size_type,
|
8597 | 8601 | Hash, Allocator)
|
8598 |
| - -> unordered_set<typename iterator_traits<InputIterator>::value_type, Hash, |
8599 |
| - equal_to<typename iterator_traits<InputIterator>::value_type>, |
| 8602 | + -> unordered_set<@\placeholder{iter-value-type}@<InputIterator>, Hash, |
| 8603 | + equal_to<@\placeholder{iter-value-type}@<InputIterator>>, |
8600 | 8604 | Allocator>;
|
8601 | 8605 |
|
8602 | 8606 | template<class T, class Allocator>
|
|
8873 | 8877 | };
|
8874 | 8878 |
|
8875 | 8879 | template<class InputIterator,
|
8876 |
| - class Hash = hash<typename iterator_traits<InputIterator>::value_type>, |
8877 |
| - class Pred = equal_to<typename iterator_traits<InputIterator>::value_type>, |
8878 |
| - class Allocator = allocator<typename iterator_traits<InputIterator>::value_type>> |
| 8880 | + class Hash = hash<@\placeholder{iter-value-type}@<InputIterator>>, |
| 8881 | + class Pred = equal_to<@\placeholder{iter-value-type}@<InputIterator>>, |
| 8882 | + class Allocator = allocator<@\placeholder{iter-value-type}@<InputIterator>>> |
8879 | 8883 | unordered_multiset(InputIterator, InputIterator, @\seebelow@::size_type = @\seebelow@,
|
8880 | 8884 | Hash = Hash(), Pred = Pred(), Allocator = Allocator())
|
8881 |
| - -> unordered_multiset<typename iterator_traits<InputIterator>::value_type, |
| 8885 | + -> unordered_multiset<@\placeholder{iter-value-type}@<InputIterator>, |
8882 | 8886 | Hash, Pred, Allocator>;
|
8883 | 8887 |
|
8884 | 8888 | template<class T, class Hash = hash<T>,
|
|
8889 | 8893 |
|
8890 | 8894 | template<class InputIterator, class Allocator>
|
8891 | 8895 | unordered_multiset(InputIterator, InputIterator, typename @\seebelow@::size_type, Allocator)
|
8892 |
| - -> unordered_multiset<typename iterator_traits<InputIterator>::value_type, |
8893 |
| - hash<typename iterator_traits<InputIterator>::value_type>, |
8894 |
| - equal_to<typename iterator_traits<InputIterator>::value_type>, |
| 8896 | + -> unordered_multiset<@\placeholder{iter-value-type}@<InputIterator>, |
| 8897 | + hash<@\placeholder{iter-value-type}@<InputIterator>>, |
| 8898 | + equal_to<@\placeholder{iter-value-type}@<InputIterator>>, |
8895 | 8899 | Allocator>;
|
8896 | 8900 |
|
8897 | 8901 | template<class InputIterator, class Hash, class Allocator>
|
8898 | 8902 | unordered_multiset(InputIterator, InputIterator, typename @\seebelow@::size_type,
|
8899 | 8903 | Hash, Allocator)
|
8900 |
| - -> unordered_multiset<typename iterator_traits<InputIterator>::value_type, Hash, |
8901 |
| - equal_to<typename iterator_traits<InputIterator>::value_type>, |
| 8904 | + -> unordered_multiset<@\placeholder{iter-value-type}@<InputIterator>, Hash, |
| 8905 | + equal_to<@\placeholder{iter-value-type}@<InputIterator>>, |
8902 | 8906 | Allocator>;
|
8903 | 8907 |
|
8904 | 8908 | template<class T, class Allocator>
|
|
0 commit comments