टी एल; डॉ
std::reference_wrapper
इस तरह का उपयोग करें:
#include <functional>
#include <string>
#include <vector>
#include <iostream>
int main()
{
std::string hello = "Hello, ";
std::string world = "everyone!";
typedef std::vector<std::reference_wrapper<std::string>> vec_t;
vec_t vec = {hello, world};
vec[1].get() = "world!";
std::cout << hello << world << std::endl;
return 0;
}
Demo
लंबा जवाब
के रूप में मानक से पता चलता है , एक मानक कंटेनर के लिए X
प्रकार की वस्तुओं से युक्त T
, T
होना चाहिए Erasable
से X
।
Erasable
इसका मतलब है कि निम्नलिखित अभिव्यक्ति अच्छी तरह से बनाई गई है:
allocator_traits<A>::destroy(m, p)
A
कंटेनर का एलोकेटर प्रकार है, m
एलोकेटर उदाहरण है और p
यह एक प्रकार का पॉइंटर है *T
। परिभाषा के लिए यहां देखें Erasable
।
डिफ़ॉल्ट रूप से, std::allocator<T>
वेक्टर के आवंटनकर्ता के रूप में उपयोग किया जाता है। डिफ़ॉल्ट आवंटनकर्ता के साथ, आवश्यकता की वैधता के बराबर है p->~T()
(नोट T
एक संदर्भ प्रकार है और p
एक संदर्भ के लिए सूचक है)। हालांकि, एक संदर्भ के लिए सूचक अवैध है , इसलिए अभिव्यक्ति अच्छी तरह से नहीं बनती है।