দ্রষ্টব্য: এই প্রশ্নটি সম্পর্কে name space
, না namespace
।
সি ++ স্ট্যান্ডার্ডের কিছু উল্লেখ রয়েছে name space
তবে আমি এর সংজ্ঞাটি দেখতে পাচ্ছি না। মানদণ্ডগুলি বলছে যে লেবেল এবং ম্যাক্রোগুলি বিভিন্ন নামের জায়গাতে রয়েছে। অন্যান্য সমস্ত উল্লেখগুলি name space
সি / সি ++ সামঞ্জস্যতা বিভাগে রয়েছে ( বর্তমান খসড়া ) এর মতো:
এটি সি এবং সি ++ এর মধ্যে কয়েকটি অসঙ্গতিগুলির মধ্যে একটি যা নতুন সি ++ নাম স্থান সংজ্ঞাতে দায়ী করা যেতে পারে যেখানে কোনও নাম একটি প্রকার হিসাবে ঘোষণা করা যেতে পারে এবং একক স্কোপে একটি অ-টাইপ হিসাবে নন-টাইপ নামটি আড়াল করে দেয় নাম টাইপ করুন এবং প্রয়োজনীয় কীওয়ার্ড শ্রেণি, কাঠামো, ইউনিয়ন বা এনুম টাইপ নাম উল্লেখ করতে ব্যবহার করা উচিত। এই নতুন নামের স্থান সংজ্ঞাটি সি ++ প্রোগ্রামারদের জন্য গুরুত্বপূর্ণ নোটিক্যাল সুবিধাগুলি সরবরাহ করে এবং ব্যবহারকারী-সংজ্ঞায়িত প্রকারগুলিকে মৌলিক প্রকারের ব্যবহারের সাথে যথাসম্ভব অনুরূপ করতে সহায়তা করে।
এই নতুন নামের স্থান সংজ্ঞাটি কী? আমি এটি স্ট্যান্ডার্ডে কোথায় পাব? সঠিক নিয়ম কি? "নন-টাইপ লুকানোর ধরণের" চেয়ে নিয়মগুলি আরও জটিল বলে মনে হচ্ছে। পছন্দ করুন, এটি সংকলন করে না:
typedef int Foo; // Foo is a type
void Foo(); // not a type, but compile error, instead of hiding
তবে এটি করে:
struct Foo { }; // Foo is a type as well
void Foo(); // This hides the type Foo. "struct Foo" refers to the type
এবং এটিও সংকলন করে না:
struct Foo { }; // Type
namespace Foo { } // Non-type, but compiler error instead of hiding
[stmt.label]/1
এবং ম্যাক্রো জন্য এক [cpp]/8
।