দেখে মনে হচ্ছে (২) ( ব্যবহারকারী-সংজ্ঞায়িত শ্রেণীর ঘোষণা করা একই নামস্থানে অবাধ স্থায়ী অবস্থান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.