ধরুন আমার কাছে কল করার মতো ধরণ রয়েছে:
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; };