দেখে মনে হচ্ছে (২) ( ব্যবহারকারী-সংজ্ঞায়িত শ্রেণীর ঘোষণা করা একই নামস্থানে অবাধ স্থায়ী অবস্থানswap
) ব্যবহারকারী-সংজ্ঞায়িত শ্রেণীর জন্য একমাত্র অনুমোদিত উপায় swap
, কারণ নামস্থানে ঘোষণাগুলি যুক্ত std
করা সাধারণত একটি অপরিজ্ঞাত আচরণ। নেমস্পেস স্ট্যান্ড (সিপ্রেফারেন্স ডটকম) প্রসারিত করা :
নীচে উল্লিখিত কয়েকটি ব্যতিক্রম ব্যতীত নেমস্পেসে std
বা কোনও নেমস্পেসের মধ্যে নামকরণে ঘোষণা বা সংজ্ঞা যুক্ত করা অপরিজ্ঞাত আচরণ isstd
এবং swap
এই ব্যতিক্রমগুলির মধ্যে একটি হিসাবে চিহ্নিত করা হয় না। সুতরাং নিজের swap
জায়গার নিজের std
নাম বোঝাতে যুক্ত করা একটি অপরিজ্ঞাত আচরণ।
এটি আরও বলা হয় যে স্ট্যান্ডার্ড লাইব্রেরি যদি কোনও ব্যবহারকারী শ্রেণীর জন্য swap
ব্যবহারকারী-সংজ্ঞায়িত কল করার জন্য ফাংশনে একটি অযোগ্য কল ব্যবহার করে swap
তবে যদি এই জাতীয় ব্যবহারকারীর সংজ্ঞা swap
দেওয়া থাকে।
অদলবদল (cppreferences.com) :
অনেক মান গ্রন্থাগার ফাংশন (উদাহরণস্বরূপ, অনেক আলগোরিদিম) সন্তুষ্ট তাদের আর্গুমেন্ট আশা Swappable , যার মানে যে কোন সময় মান গ্রন্থাগার সঞ্চালিত একটি swap, এটা সমতুল্য ব্যবহার using std::swap; swap(t, u);
।
অদলবদল (www.cplusplus.com) :
মান লাইব্রেরী (মধ্যে বহু উপাদান std
) কলের swap
একটি ইন অযোগ্য কাস্টম overloads: পদ্ধতিতে অ মৌলিক ধরনের জন্য কাস্টম overloads এই জেনেরিক সংস্করণের পরিবর্তে বলা যেতে অনুমতি দিতে swap
, যার জন্য তারা নির্বাচিত পেতে প্রদান করা হয় টাইপ হিসাবে একই নামস্থান ঘোষণা এই জেনেরিক সংস্করণ জুড়ে যুক্তি নির্ভর-নির্ভর অনুসন্ধানের মাধ্যমে ।
তবে মনে রাখবেন যে std::swap
ব্যবহারকারী-সংজ্ঞায়িত শ্রেণীর জন্য সরাসরি ফাংশনটি ব্যবহার করে ব্যবহারকারী-সংজ্ঞায়িতের std::swap
পরিবর্তে জেনেরিক সংস্করণটি কল করে swap
:
my::object a, b;
std::swap(a, b); // calls std::swap, not my::swap
সুতরাং swap
স্ট্যান্ডার্ড লাইব্রেরিতে যেমন করা হয় ঠিক তেমনভাবে ব্যবহারকারীর কোডে ফাংশনটি কল করার পরামর্শ দেওয়া হয় :
my::object a, b;
using std::swap;
swap(a, b); // calls my::swap if it is defined, or std::swap if it is not.