![]() |
|
|||
File indexing completed on 2025-09-15 08:53:59
0001 // 0002 // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com) 0003 // Copyright (c) 2022 Alan de Freitas (alandefreitas@gmail.com) 0004 // 0005 // Distributed under the Boost Software License, Version 1.0. (See accompanying 0006 // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 0007 // 0008 // Official repository: https://github.com/boostorg/url 0009 // 0010 0011 #ifndef BOOST_URL_PARAMS_ENCODED_REF_HPP 0012 #define BOOST_URL_PARAMS_ENCODED_REF_HPP 0013 0014 #include <boost/url/detail/config.hpp> 0015 #include <boost/url/ignore_case.hpp> 0016 #include <boost/url/params_encoded_view.hpp> 0017 #include <initializer_list> 0018 0019 namespace boost { 0020 namespace urls { 0021 0022 #ifndef BOOST_URL_DOCS 0023 class url_base; 0024 class params_encoded_view; 0025 #endif 0026 0027 /** A view representing query parameters in a URL 0028 0029 Objects of this type are used to interpret 0030 the query parameters as a bidirectional view 0031 of key value pairs. 0032 0033 The view does not retain ownership of the 0034 elements and instead references the original 0035 url. The caller is responsible for ensuring 0036 that the lifetime of the referenced url 0037 extends until it is no longer referenced. 0038 0039 The view is modifiable; calling non-const 0040 members causes changes to the referenced 0041 url. 0042 0043 @par Example 0044 @code 0045 url u( "?first=John&last=Doe" ); 0046 0047 params_encoded_ref p = u.encoded_params(); 0048 @endcode 0049 0050 Strings produced when elements are returned 0051 have type @ref param_pct_view and represent 0052 encoded strings. Strings passed to member 0053 functions may contain percent escapes, and 0054 throw exceptions on invalid inputs. 0055 0056 @par Iterator Invalidation 0057 Changes to the underlying character buffer 0058 can invalidate iterators which reference it. 0059 Modifications made through the container 0060 invalidate some iterators to the underlying 0061 character buffer: 0062 @li @ref append : Only `end()`. 0063 @li @ref assign, @ref clear, 0064 `operator=` : All params. 0065 @li @ref erase : Erased params and all 0066 params after (including `end()`). 0067 @li @ref insert : All params at or after 0068 the insertion point (including `end()`). 0069 @li @ref replace, @ref set : Modified 0070 params and all params 0071 after (including `end()`). 0072 */ 0073 class BOOST_URL_DECL params_encoded_ref 0074 : public params_encoded_base 0075 { 0076 friend class url_base; 0077 0078 url_base* u_ = nullptr; 0079 0080 params_encoded_ref( 0081 url_base& u) noexcept; 0082 0083 public: 0084 //-------------------------------------------- 0085 // 0086 // Special Members 0087 // 0088 //-------------------------------------------- 0089 0090 /** Constructor 0091 0092 After construction, both views 0093 reference the same url. Ownership is not 0094 transferred; the caller is responsible 0095 for ensuring the lifetime of the url 0096 extends until it is no longer 0097 referenced. 0098 0099 @par Postconditions 0100 @code 0101 &this->url() == &other.url(); 0102 @endcode 0103 0104 @par Complexity 0105 Constant. 0106 0107 @par Exception Safety 0108 Throws nothing. 0109 0110 @param other The other view. 0111 */ 0112 params_encoded_ref( 0113 params_encoded_ref const& other) = default; 0114 0115 /** Assignment 0116 0117 The previous contents of this are 0118 replaced by the contents of `other. 0119 0120 <br> 0121 All iterators are invalidated. 0122 0123 @note 0124 The strings referenced by `other` 0125 must not come from the underlying url, 0126 or else the behavior is undefined. 0127 0128 @par Effects 0129 @code 0130 this->assign( other.begin(), other.end() ); 0131 @endcode 0132 0133 @par Complexity 0134 Linear in `other.buffer().size()`. 0135 0136 @par Exception Safety 0137 Strong guarantee. 0138 Calls to allocate may throw. 0139 0140 @param other The params to assign. 0141 @return `*this` 0142 */ 0143 params_encoded_ref& 0144 operator=( 0145 params_encoded_ref const& other); 0146 0147 /** Assignment 0148 0149 After assignment, the previous contents 0150 of the query parameters are replaced by 0151 the contents of the initializer-list. 0152 0153 <br> 0154 All iterators are invalidated. 0155 0156 @par Preconditions 0157 None of character buffers referenced by 0158 `init` may overlap the character buffer of 0159 the underlying url, or else the behavior 0160 is undefined. 0161 0162 @par Effects 0163 @code 0164 this->assign( init.begin(), init.end() ); 0165 @endcode 0166 0167 @par Complexity 0168 Linear in `init.size()`. 0169 0170 @par Exception Safety 0171 Strong guarantee. 0172 Calls to allocate may throw. 0173 Exceptions thrown on invalid input. 0174 0175 @throw system_error 0176 `init` contains an invalid percent-encoding. 0177 0178 @param init The list of params to assign. 0179 @return `*this` 0180 */ 0181 params_encoded_ref& 0182 operator=(std::initializer_list< 0183 param_pct_view> init); 0184 0185 /** Conversion 0186 0187 @par Complexity 0188 Constant. 0189 0190 @par Exception Safety 0191 Throws nothing. 0192 0193 @return A view of the params. 0194 */ 0195 operator 0196 params_encoded_view() const noexcept; 0197 0198 //-------------------------------------------- 0199 // 0200 // Observers 0201 // 0202 //-------------------------------------------- 0203 0204 /** Return the referenced url 0205 0206 This function returns the url referenced 0207 by the view. 0208 0209 @par Example 0210 @code 0211 url u( "?key=value" ); 0212 0213 assert( &u.encoded_params().url() == &u ); 0214 @endcode 0215 0216 @par Exception Safety 0217 @code 0218 Throws nothing. 0219 @endcode 0220 0221 @return A reference to the url. 0222 */ 0223 url_base& 0224 url() const noexcept 0225 { 0226 return *u_; 0227 } 0228 0229 //-------------------------------------------- 0230 // 0231 // Modifiers 0232 // 0233 //-------------------------------------------- 0234 0235 /** Clear the contents of the container 0236 0237 <br> 0238 All iterators are invalidated. 0239 0240 @par Effects 0241 @code 0242 this->url().remove_query(); 0243 @endcode 0244 0245 @par Postconditions 0246 @code 0247 this->empty() == true && this->url().has_query() == false 0248 @endcode 0249 0250 @par Complexity 0251 Constant. 0252 0253 @par Exception Safety 0254 Throws nothing. 0255 */ 0256 void 0257 clear() noexcept; 0258 0259 //-------------------------------------------- 0260 0261 /** Assign params 0262 0263 This function replaces the entire 0264 contents of the view with the params 0265 in the <em>initializer-list</em>. 0266 0267 <br> 0268 All iterators are invalidated. 0269 0270 @note 0271 The strings referenced by the inputs 0272 must not come from the underlying url, 0273 or else the behavior is undefined. 0274 0275 @par Example 0276 @code 0277 url u; 0278 0279 u.encoded_params().assign({ { "first", "John" }, { "last", "Doe" } }); 0280 @endcode 0281 0282 @par Complexity 0283 Linear in `init.size()`. 0284 0285 @par Exception Safety 0286 Strong guarantee. 0287 Calls to allocate may throw. 0288 Exceptions thrown on invalid input. 0289 0290 @throw system_error 0291 `init` contains an invalid percent-encoding. 0292 0293 @param init The list of params to assign. 0294 */ 0295 void 0296 assign( 0297 std::initializer_list< 0298 param_pct_view> init); 0299 0300 /** Assign params 0301 0302 This function replaces the entire 0303 contents of the view with the params 0304 in the range. 0305 0306 <br> 0307 All iterators are invalidated. 0308 0309 @note 0310 The strings referenced by the inputs 0311 must not come from the underlying url, 0312 or else the behavior is undefined. 0313 0314 @par Mandates 0315 @code 0316 std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_pct_view >::value == true 0317 @endcode 0318 0319 @par Complexity 0320 Linear in the size of the range. 0321 0322 @par Exception Safety 0323 Strong guarantee. 0324 Calls to allocate may throw. 0325 Exceptions thrown on invalid input. 0326 0327 @throw system_error 0328 The range contains an invalid percent-encoding. 0329 0330 @param first The first element to assign. 0331 @param last One past the last element to assign. 0332 */ 0333 template<class FwdIt> 0334 void 0335 assign(FwdIt first, FwdIt last); 0336 0337 //-------------------------------------------- 0338 0339 /** Append params 0340 0341 This function appends a param to the view. 0342 0343 <br> 0344 The `end()` iterator is invalidated. 0345 0346 @par Example 0347 @code 0348 url u; 0349 0350 u.encoded_params().append( { "first", "John" } ); 0351 @endcode 0352 0353 @par Complexity 0354 Linear in `this->url().encoded_query().size()`. 0355 0356 @par Exception Safety 0357 Strong guarantee. 0358 Calls to allocate may throw. 0359 Exceptions thrown on invalid input. 0360 0361 @throw system_error 0362 `p` contains an invalid percent-encoding. 0363 0364 @return An iterator to the new element. 0365 0366 @param p The param to append. 0367 */ 0368 iterator 0369 append( 0370 param_pct_view const& p); 0371 0372 /** Append params 0373 0374 This function appends the params in 0375 an <em>initializer-list</em> to the view. 0376 0377 <br> 0378 The `end()` iterator is invalidated. 0379 0380 @par Example 0381 @code 0382 url u; 0383 0384 u.encoded_params().append({ {"first", "John"}, {"last", "Doe"} }); 0385 @endcode 0386 0387 @par Complexity 0388 Linear in `this->url().encoded_query().size()`. 0389 0390 @par Exception Safety 0391 Strong guarantee. 0392 Calls to allocate may throw. 0393 Exceptions thrown on invalid input. 0394 0395 @throw system_error 0396 `init` contains an invalid percent-encoding. 0397 0398 @return An iterator to the first new element. 0399 0400 @param init The list of params to append. 0401 */ 0402 iterator 0403 append( 0404 std::initializer_list< 0405 param_pct_view> init); 0406 0407 /** Append params 0408 0409 This function appends a range of params 0410 to the view. 0411 0412 <br> 0413 The `end()` iterator is invalidated. 0414 0415 @note 0416 The strings referenced by the inputs 0417 must not come from the underlying url, 0418 or else the behavior is undefined. 0419 0420 @par Mandates 0421 @code 0422 std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_pct_view >::value == true 0423 @endcode 0424 0425 @par Complexity 0426 Linear in `this->url().encoded_query().size()`. 0427 0428 @par Exception Safety 0429 Strong guarantee. 0430 Calls to allocate may throw. 0431 Exceptions thrown on invalid input. 0432 0433 @throw system_error 0434 The range contains an invalid percent-encoding. 0435 0436 @return An iterator to the first new element. 0437 0438 @param first The first element to append. 0439 @param last One past the last element to append. 0440 @return An iterator to the first new element. 0441 */ 0442 template<class FwdIt> 0443 iterator 0444 append( 0445 FwdIt first, FwdIt last); 0446 0447 //-------------------------------------------- 0448 0449 /** Insert params 0450 0451 This function inserts a param 0452 before the specified position. 0453 0454 <br> 0455 All iterators that are equal to 0456 `before` or come after are invalidated. 0457 0458 @par Complexity 0459 Linear in `this->url().encoded_query().size()`. 0460 0461 @par Exception Safety 0462 Strong guarantee. 0463 Calls to allocate may throw. 0464 Exceptions thrown on invalid input. 0465 0466 @throw system_error 0467 `p` contains an invalid percent-encoding. 0468 0469 @return An iterator to the inserted 0470 element. 0471 0472 @param before An iterator before which 0473 the param is inserted. This may 0474 be equal to `end()`. 0475 0476 @param p The param to insert. 0477 */ 0478 iterator 0479 insert( 0480 iterator before, 0481 param_pct_view const& p); 0482 0483 /** Insert params 0484 0485 This function inserts the params in 0486 an <em>initializer-list</em> before 0487 the specified position. 0488 0489 <br> 0490 All iterators that are equal to 0491 `before` or come after are invalidated. 0492 0493 @note 0494 The strings referenced by the inputs 0495 must not come from the underlying url, 0496 or else the behavior is undefined. 0497 0498 @par Complexity 0499 Linear in `this->url().encoded_query().size()`. 0500 0501 @par Exception Safety 0502 Strong guarantee. 0503 Calls to allocate may throw. 0504 Exceptions thrown on invalid input. 0505 0506 @throw system_error 0507 `init` contains an invalid percent-encoding. 0508 0509 @return An iterator to the first 0510 element inserted, or `before` if 0511 `init.size() == 0`. 0512 0513 @param before An iterator before which 0514 the element is inserted. This may 0515 be equal to `end()`. 0516 0517 @param init The list of params to insert. 0518 */ 0519 iterator 0520 insert( 0521 iterator before, 0522 std::initializer_list< 0523 param_pct_view> init); 0524 0525 /** Insert params 0526 0527 This function inserts a range of 0528 params before the specified position. 0529 0530 <br> 0531 All iterators that are equal to 0532 `before` or come after are invalidated. 0533 0534 @note 0535 The strings referenced by the inputs 0536 must not come from the underlying url, 0537 or else the behavior is undefined. 0538 0539 @par Mandates 0540 @code 0541 std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_pct_view >::value == true 0542 @endcode 0543 0544 @par Complexity 0545 Linear in `this->url().encoded_query().size()`. 0546 0547 @par Exception Safety 0548 Strong guarantee. 0549 Calls to allocate may throw. 0550 Exceptions thrown on invalid input. 0551 0552 @throw system_error 0553 The range contains an invalid percent-encoding. 0554 0555 @return An iterator to the first 0556 element inserted, or `before` if 0557 `first == last`. 0558 0559 @param before An iterator before which 0560 the element is inserted. This may 0561 be equal to `end()`. 0562 0563 @param first The first element to insert. 0564 @param last One past the last element to insert. 0565 @return An iterator to the first element inserted. 0566 */ 0567 template<class FwdIt> 0568 iterator 0569 insert( 0570 iterator before, 0571 FwdIt first, 0572 FwdIt last); 0573 0574 //-------------------------------------------- 0575 0576 /** Erase params 0577 0578 This function removes an element from 0579 the container. 0580 0581 <br> 0582 All iterators that are equal to 0583 `pos` or come after are invalidated. 0584 0585 @par Example 0586 @code 0587 url u( "?first=John&last=Doe" ); 0588 0589 params_encoded_ref::iterator it = u.encoded_params().erase( u.encoded_params().begin() ); 0590 0591 assert( u.encoded_query() == "last=Doe" ); 0592 @endcode 0593 0594 @par Complexity 0595 Linear in `this->url().encoded_query().size()`. 0596 0597 @par Exception Safety 0598 Throws nothing. 0599 0600 @return An iterator to one past 0601 the removed element. 0602 0603 @param pos An iterator to the element. 0604 */ 0605 iterator 0606 erase(iterator pos) noexcept; 0607 0608 /** Erase params 0609 0610 This function removes a range of params 0611 from the container. 0612 0613 <br> 0614 All iterators that are equal to 0615 `first` or come after are invalidated. 0616 0617 @par Complexity 0618 Linear in `this->url().encoded_query().size()`. 0619 0620 @par Exception Safety 0621 Throws nothing. 0622 0623 @return An iterator to one past 0624 the removed range. 0625 0626 @param first The first element to remove. 0627 @param last One past the last element to remove. 0628 @return An iterator to one past the removed range. 0629 */ 0630 iterator 0631 erase( 0632 iterator first, 0633 iterator last) noexcept; 0634 0635 /** Erase params 0636 0637 <br> 0638 All iterators are invalidated. 0639 0640 @par Postconditions 0641 @code 0642 this->count( key, ic ) == 0 0643 @endcode 0644 0645 @par Complexity 0646 Linear in `this->url().encoded_query().size()`. 0647 0648 @par Exception Safety 0649 Exceptions thrown on invalid input. 0650 0651 @throw system_error 0652 `key` contains an invalid percent-encoding. 0653 0654 @return The number of params removed 0655 from the container. 0656 0657 @param key The key to match. 0658 By default, a case-sensitive 0659 comparison is used. 0660 0661 @param ic An optional parameter. If 0662 the value @ref ignore_case is passed 0663 here, the comparison is 0664 case-insensitive. 0665 */ 0666 std::size_t 0667 erase( 0668 pct_string_view key, 0669 ignore_case_param ic = {}) noexcept; 0670 0671 //-------------------------------------------- 0672 0673 /** Replace params 0674 0675 This function replaces the contents 0676 of the element at `pos` with the 0677 specified param. 0678 0679 <br> 0680 All iterators that are equal to 0681 `pos` or come after are invalidated. 0682 0683 @note 0684 The strings passed in must not come 0685 from the element being replaced, 0686 or else the behavior is undefined. 0687 0688 @par Example 0689 @code 0690 url u( "?first=John&last=Doe" ); 0691 0692 u.encoded_params().replace( u.encoded_params().begin(), { "title", "Mr" }); 0693 0694 assert( u.encoded_query() == "title=Mr&last=Doe" ); 0695 @endcode 0696 0697 @par Complexity 0698 Linear in `this->url().encoded_query().size()`. 0699 0700 @par Exception Safety 0701 Strong guarantee. 0702 Calls to allocate may throw. 0703 Exceptions thrown on invalid input. 0704 0705 @throw system_error 0706 `p` contains an invalid percent-encoding. 0707 0708 @return An iterator to the element. 0709 0710 @param pos An iterator to the element. 0711 0712 @param p The param to assign. 0713 */ 0714 iterator 0715 replace( 0716 iterator pos, 0717 param_pct_view const& p); 0718 0719 /** Replace params 0720 0721 This function replaces a range of 0722 params with the params in an 0723 <em>initializer-list</em>. 0724 0725 <br> 0726 All iterators that are equal to 0727 `from` or come after are invalidated. 0728 0729 @note 0730 The strings referenced by the inputs 0731 must not come from the underlying url, 0732 or else the behavior is undefined. 0733 0734 @par Complexity 0735 Linear in `this->url().encoded_query().size()`. 0736 0737 @par Exception Safety 0738 Strong guarantee. 0739 Calls to allocate may throw. 0740 Exceptions thrown on invalid input. 0741 0742 @throw system_error 0743 `init` contains an invalid percent-encoding. 0744 0745 @return An iterator to the first 0746 element inserted, or one past `to` if 0747 `init.size() == 0`. 0748 0749 @param from,to The range of params 0750 to replace. 0751 0752 @param init The list of params to assign. 0753 */ 0754 iterator 0755 replace( 0756 iterator from, 0757 iterator to, 0758 std::initializer_list< 0759 param_pct_view> init); 0760 0761 /** Replace params 0762 0763 This function replaces a range of 0764 params with a range of params. 0765 0766 <br> 0767 All iterators that are equal to 0768 `from` or come after are invalidated. 0769 0770 @note 0771 The strings referenced by the inputs 0772 must not come from the underlying url, 0773 or else the behavior is undefined. 0774 0775 @par Mandates 0776 @code 0777 std::is_convertible< std::iterator_traits< FwdIt >::reference_type, param_pct_view >::value == true 0778 @endcode 0779 0780 @par Complexity 0781 Linear in `this->url().encoded_query().size()`. 0782 0783 @par Exception Safety 0784 Strong guarantee. 0785 Calls to allocate may throw. 0786 Exceptions thrown on invalid input. 0787 0788 @throw system_error 0789 The range contains an invalid percent-encoding. 0790 0791 @return An iterator to the first 0792 element inserted, or one past `to` if 0793 `first == last`. 0794 0795 @param from The first element to replace. 0796 @param to One past the last element to replace. 0797 @param first The first element to insert. 0798 @param last One past the last element to insert. 0799 @return An iterator to the first element inserted, or 0800 one past `to` if `first == last`. 0801 */ 0802 template<class FwdIt> 0803 iterator 0804 replace( 0805 iterator from, 0806 iterator to, 0807 FwdIt first, 0808 FwdIt last); 0809 0810 //-------------------------------------------- 0811 0812 /** Remove the value on an element 0813 0814 This function removes the value of 0815 an element at the specified position. 0816 After the call returns, `has_value` 0817 for the element is false. 0818 0819 <br> 0820 All iterators that are equal to 0821 `pos` or come after are invalidated. 0822 0823 @par Example 0824 @code 0825 url u( "?first=John&last=Doe" ); 0826 0827 u.encoded_params().unset( u.encoded_params().begin() ); 0828 0829 assert( u.encoded_query() == "first&last=Doe" ); 0830 @endcode 0831 0832 @par Complexity 0833 Linear in `this->url().encoded_query().size()`. 0834 0835 @par Exception Safety 0836 Throws nothing. 0837 0838 @return An iterator to the element. 0839 0840 @param pos An iterator to the element. 0841 */ 0842 iterator 0843 unset( 0844 iterator pos) noexcept; 0845 0846 /** Set a value 0847 0848 This function replaces the value of an 0849 element at the specified position. 0850 0851 <br> 0852 All iterators that are equal to 0853 `pos` or come after are invalidated. 0854 0855 @note 0856 The string passed in must not come 0857 from the element being replaced, 0858 or else the behavior is undefined. 0859 0860 @par Example 0861 @code 0862 url u( "?id=42&id=69" ); 0863 0864 u.encoded_params().set( u.encoded_params().begin(), "none" ); 0865 0866 assert( u.encoded_query() == "id=none&id=69" ); 0867 @endcode 0868 0869 @par Complexity 0870 Linear in `this->url().encoded_query().size()`. 0871 0872 @par Exception Safety 0873 Strong guarantee. 0874 Calls to allocate may throw. 0875 Exceptions thrown on invalid input. 0876 0877 @throw system_error 0878 `value` contains an invalid percent-encoding. 0879 0880 @return An iterator to the element. 0881 0882 @param pos An iterator to the element. 0883 0884 @param value The value to assign. The 0885 empty string still counts as a value. 0886 That is, `has_value` for the element 0887 is true. 0888 */ 0889 iterator 0890 set( 0891 iterator pos, 0892 pct_string_view value); 0893 0894 /** Set a value 0895 0896 This function performs one of two 0897 actions depending on the value of 0898 `this->contains( key, ic )`. 0899 0900 @li If key is contained in the view 0901 then one of the matching params has 0902 its value changed to the specified value. 0903 The remaining params with a matching 0904 key are erased. Otherwise, 0905 0906 @li If `key` is not contained in the 0907 view, then the function apppends the 0908 param `{ key, value }`. 0909 0910 <br> 0911 All iterators are invalidated. 0912 0913 @note 0914 The strings passed in must not come 0915 from the element being replaced, 0916 or else the behavior is undefined. 0917 0918 @par Example 0919 @code 0920 url u( "?id=42&id=69" ); 0921 0922 u.encoded_params().set( "id", "none" ); 0923 0924 assert( u.encoded_params().count( "id" ) == 1 ); 0925 @endcode 0926 0927 @par Postconditions 0928 @code 0929 this->count( key, ic ) == 1 && this->find( key, ic )->value == value 0930 @endcode 0931 0932 @par Complexity 0933 Linear in `this->url().encoded_query().size()`. 0934 0935 @par Exception Safety 0936 Strong guarantee. 0937 Calls to allocate may throw. 0938 Exceptions thrown on invalid input. 0939 0940 @throw system_error 0941 `key` or `value` contain an invalid 0942 percent-encoding. 0943 0944 @return An iterator to the appended 0945 or modified element. 0946 0947 @param key The key to match. 0948 By default, a case-sensitive 0949 comparison is used. 0950 0951 @param value The value to assign. The 0952 empty string still counts as a value. 0953 That is, `has_value` for the element 0954 is true. 0955 0956 @param ic An optional parameter. If 0957 the value @ref ignore_case is passed 0958 here, the comparison is 0959 case-insensitive. 0960 */ 0961 iterator 0962 set( 0963 pct_string_view key, 0964 pct_string_view value, 0965 ignore_case_param ic = {}); 0966 0967 private: 0968 template<class FwdIt> 0969 void 0970 assign(FwdIt first, FwdIt last, 0971 std::forward_iterator_tag); 0972 0973 // Doxygen cannot render ` = delete` 0974 template<class FwdIt> 0975 void 0976 assign(FwdIt first, FwdIt last, 0977 std::input_iterator_tag) = delete; 0978 0979 template<class FwdIt> 0980 iterator 0981 insert( 0982 iterator before, 0983 FwdIt first, 0984 FwdIt last, 0985 std::forward_iterator_tag); 0986 0987 // Doxygen cannot render ` = delete` 0988 template<class FwdIt> 0989 iterator 0990 insert( 0991 iterator before, 0992 FwdIt first, 0993 FwdIt last, 0994 std::input_iterator_tag) = delete; 0995 }; 0996 0997 } // urls 0998 } // boost 0999 1000 // This is in <boost/url/url_base.hpp> 1001 // 1002 // #include <boost/url/impl/params_encoded_ref.hpp> 1003 1004 #endif
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |