টি এল; ডাঃ
এটি ব্যবহার করুন 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
একটি রেফারেন্সের দিকে নির্দেশক)। যাহোক, একটি রেফারেন্সের পয়েন্টারটি অবৈধ , সুতরাং এক্সপ্রেশনটি ভালভাবে গঠিত হয় না।