ধরুন আমার কাছে কল করার মতো ধরণ রয়েছে:
struct mutable_callable
{
int my_mutable = 0;
int operator()() { // Not const
return my_mutable++;
}
};
লক্ষ্য করুন mutable_callable
একটি অ-const হয়েছে operator()
যে মডিফাই সদস্য পরিবর্তনশীল .....
এখন ধরুন আমি std::function
আমার ধরণের একটি তৈরি করেছি:
std::function<int()> foo = mutable_callable{};
এখন আমি এটি করতে পারি:
void invoke(std::function<int()> const& z)
{
z();
}
int main()
{
invoke(foo); // foo changed.....oops
}
এখন পর্যন্ত আমি যতটা বলতে পারি std::function
সেগুলি operator()
হ'ল const
:
https://en.cppreferences.com/w/cpp/utility/functional/function/operator ()
সুতরাং আমার অন্ত্র অনুভূতি হ'ল আপনি এটি করতে সক্ষম হবেন না .....
তবে তারপরে দেখুন: https://en.cppreferences.com/w/cpp/uटिल / functional / function / function
এটি কলযোগ্য ধরণের একটি ধ্রুবক আছে কিনা তা নিয়ে কোনও প্রতিবন্ধকতা রয়েছে বলে মনে হচ্ছে না operator()
......
সুতরাং আমার প্রশ্নটি হ'ল: আমি ধরে নিলাম যে std::function<int()> const&
এটি মূলত একই জিনিস হিসাবে ধরে নেওয়া ঠিক যে std::function<int()>&
দুজনের আচরণের মধ্যে আসলে কোনও পার্থক্য নেই ...... এবং যদি তা হয় তবে কেন এটি const
সঠিক নয় ?
std::function
বাস্তবায়নের ইন্টার্নালগুলির একটি ছোট স্নিপেট রয়েছে : i.stack.imgur.com/eNenN.png যেখানে using _Ptrt = _Func_base<_Ret, _Types...>
। আমি আমার মামলা বিশ্রাম।
std::function
সাথে এর সমানstruct a{ std::any x; };