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