সি ++ 14 কি সি ++ এ নতুন কীওয়ার্ড যুক্ত করছে?


103

সি ++ স্ট্যান্ডার্ড কমিটি ভাষায় নতুন কীওয়ার্ড যুক্ত করা থেকে বিরত থাকে, তবুও সি ++ 11 এর ক্ষেত্রে এটি ছিল না। কিছু উদাহরণ:

constexpr
decltype
thread_local
auto // New usage
noexcept
nullptr
static_assert
alignof
alignas

সি ++ 14 এর সাথে নতুন কোনও কীওয়ার্ড চালু হয়েছে?

উত্তর:


135

N3936 (সি ++ 14) এ সারণী 4 (কীওয়ার্ড):

alignas           continue          friend            register          true
alignof           decltype          goto              reinterpret_cast  try
asm               default           if                return            typedef
auto              delete            inline            short             typeid
bool              do                int               signed            typename
break             double            long              sizeof            union
case              dynamic_cast      mutable           static            unsigned
catch             else              namespace         static_assert     using
char              enum              new               static_cast       virtual
char16_t          explicit          noexcept          struct            void
char32_t          export            nullptr           switch            volatile
class             extern            operator          template          wchar_t
const             false             private           this              while
constexpr         float             protected         thread_local
const_cast        for               public            throw

সারণি 4 এন 333 এ (সি ++ 11):

alignas           continue          friend            register          true
alignof           decltype          goto              reinterpret_cast  try
asm               default           if                return            typedef
auto              delete            inline            short             typeid
bool              do                int               signed            typename
break             double            long              sizeof            union
case              dynamic_cast      mutable           static            unsigned
catch             else              namespace         static_assert     using
char              enum              new               static_cast       virtual
char16_t          explicit          noexcept          struct            void
char32_t          export            nullptr           switch            volatile
class             extern            operator          template          wchar_t
const             false             private           this              while
constexpr         float             protected         thread_local
const_cast        for               public            throw

... যা "না" বলার দীর্ঘ পথের পথ।

( overrideএবং final"বিশেষ অর্থ সহ সনাক্তকারী" এবং টেবিল 3 এ তালিকাভুক্ত; andইত্যাদি হলেন "নির্দিষ্ট অপারেটর এবং বিরামচিহ্নগুলির জন্য বিকল্প উপস্থাপনা" এবং টেবিল 5-এ তালিকাভুক্ত করা হয় না সি -+ 11 এবং সি ++ এর মধ্যে টেবিলের কোনও পরিবর্তন হয়নি) 14.)


2
আমি বলব যে এটি প্রতিটি অনুবাদ ইউনিটের গ্লোবাল নেমস্পেসে রেখে দেওয়া হয়েছে। (হ্যাঁ, আপনি কেন তা জিজ্ঞাসা করতে পারেন এবং তারপরে ভাল ...)
আর মার্টিনহো ফার্নান্দেস

2
কি registerশব্দ এখনো দরকারী বা নতুন সি ++ 11 কোডে করতেন?
ওয়াল্টার

2
@ ওয়াল্টার এটি যাহাই হউক না কেন কম্পাইলারদের দ্বারা অবহেলা করা এবং ব্যাপকভাবে উপেক্ষা করা হয়েছে।
টিসি

1
বিকল্প টোকেন লজিক্যাল অপারেটর জন্য ঐ টেবিল উল্লেখ না? তারা কি সি ++ কীওয়ার্ড নয়?
নিকোস আথানাসিউ

1
@ নিকোস অ্যাথানাসিউ, এই আইআইআরসি-র আওতাধীন যারা আছেন তাদের জন্য একটি টেবিল রয়েছে।
ক্রিস

85

অনুরূপ প্রশ্নের উত্তর অনুসন্ধানের জন্য সরঞ্জাম দেওয়ার খাতিরে আমি এই উত্তরটি পোস্ট করছি।

মানক খসড়াটি বর্তমানে সর্বজনীন গিটহাবের সংগ্রহস্থলে রাখা হয়েছে। তার মানে আপনি এই প্রশ্নটি নিজেই গিটহাবকে জিজ্ঞাসা করতে পারেন!

কীওয়ার্ড টেবিলটি ফাইলটিতে রয়েছে source/lex.tex। আপনি যদি এটির জন্য কোনও দোষ দেন তবে আমরা খুঁজে পেতে পারি যে কীওয়ার্ড টেবিলের সর্বশেষ পরিবর্তনটি আগস্ট ২০১১ সালে ফিরে এসেছিল (এটি আসলে প্রথম প্রতিশ্রুতিবদ্ধ: রেপো সি ++ 11 এর সময় লাইভ হওয়ার পর থেকে সেই টেবিলটি পরিবর্তন হয়নি hasn't চূড়ান্ত করা হচ্ছে)।

বিকল্পভাবে আমরা গিটহাবকে স্ট্যান্ডার্ডের উভয় সংস্করণের জন্য ব্যালটের জন্য প্রেরণ করা দুটি ড্রাফ্টের তুলনা করতে বলতে পারি: এন 3337 এবং এন 3936। এই দুটির মধ্যে একটি পার্থক্য দেখায় যে lex.texকীওয়ার্ড সারণীতে পরিবর্তনগুলি কোনও পরিবর্তন করেনি।


1
এর জন্য ধন্যবাদ! দেখে মনে হচ্ছে আজও কোনও পরিবর্তন হয়নি।
এসবিআই

34

সি ++ 14 দিয়ে কোনও নতুন কীওয়ার্ড যুক্ত করা হবে না। এটি আশ্চর্যজনক না কারণ C ++ 14 মূলত বাগগুলি পরিষ্কার করা এবং ছোট, কম প্রভাব, উন্নতি করতে জড়িত সি ++ 11 এর একটি ছোট আপগ্রেড হিসাবে লক্ষ্য করা যায়। পরবর্তী বড় পরিবর্তন সম্ভবত সি ++ '17' হবে যেখানে আমি আরও একবার নতুন কীওয়ার্ড আশা করব।

সি ++ স্ট্যান্ডার্ড কমিটি ভাষায় নতুন কীওয়ার্ড যুক্ত করা থেকে বিরত থাকে, তবুও সি ++ 11 এর ক্ষেত্রে এটি ছিল না।

আমি মনে করি যে কেন কমিটি নতুন কীওয়ার্ড যুক্ত করা থেকে দূরে সরে যায় (এবং সহ-ঘটনাক্রমে আপনি কেন autoনিজের তালিকায় অন্তর্ভুক্ত করতে ভুল করছেন ) considering নতুন কীওয়ার্ডগুলির সাথে মুখ্য সমস্যা হ'ল সি ++ এ আপনি একটি শব্দের সনাক্তকারী হিসাবে ব্যবহার করতে পারবেন না যার অর্থ একটি নতুন কীওয়ার্ড যুক্ত করা বিদ্যমান কোডটিকে ভেঙে দেয়। এরপরে autoপুনরায় পোস্ট করা তাদের নিয়ম ভঙ্গ করে না কারণ কোনও বিদ্যমান কোড যেভাবেইauto সনাক্তকারী হিসাবে ব্যবহার করতে পারে না

সুতরাং একটি নতুন কীওয়ার্ড গ্রহণ করার জন্য একটি যুক্তি থাকা দরকার যা বিদ্যমান কোডের সাথে একটি সম্ভাব্য সংঘর্ষের ব্যয়কে ছাড়িয়ে যায় এবং কোনও নতুন কীওয়ার্ড ছাড়াই একই জিনিস বাস্তবায়নের কোনও বুদ্ধিমান উপায় নয়। সি ++ 11 এর ক্ষেত্রে কমিটি কয়েকটি প্রস্তাব গ্রহণ করেছে যাতে নতুন কীওয়ার্ডের প্রয়োজন ছিল কারণ তারা মনে করেছিল যে সুবিধাটি ব্যয়কে ছাড়িয়েছে কারণ তারা নতুন কীওয়ার্ড যুক্ত করতে ঘৃণা করে না।

এছাড়াও আপনি যে তালিকাটি দিয়েছেন তা নীচে দেখলে প্রত্যেকটিই একটি যৌগিক কীওয়ার্ড, কারণ এটি বিদ্যমান সনাক্তকারীদের সাথে সংঘর্ষের সম্ভাবনা হ্রাস করে reduces


1
"সি ++ '১' 'যেখানে আমি আরও নতুন কীওয়ার্ড প্রত্যাশা করব" ": সি ++ অবশেষে বৃদ্ধি পেতে বন্ধ করবে?
জর্জিও 15

2
@ জর্জিও কি সফ্টওয়্যার এবং হার্ডওয়্যার অবশেষে বিকশিত হওয়া বন্ধ করবে? এখানে বড় সংশয়টি হ'ল আপনি কোনও সাহসী সিদ্ধান্ত নিতে পারেন এবং "পুরানো" বাক্য গঠনটি ফেলে দিতে পারেন, পুরানো কোডটি ভেঙে কেবল ভাষার বিকশিত অংশের সাথে এগিয়ে যেতে পারেন। পাইথন কিন্ডা এটি করার চেষ্টা করে
লোরা অ্যাটকিন্স

2
@ নোরাহএটকিনস: স্পষ্টতই সফ্টওয়্যারটি অবশ্যই বিকশিত হতে হবে, তবে অনির্দিষ্টকালের জন্য একটি ভাষা বৃদ্ধি কেবল একমাত্র সমাধান নয়: যখন কোনও ভাষা একটি নির্দিষ্ট কুলুঙ্গীর জন্য পরিপক্ক হয়, আপনি সর্বদা সামঞ্জস্যতা ভঙ্গ করতে এবং নতুন কুলুঙ্গির প্রয়োজনীয়তা পূরণের জন্য একটি নতুন ভাষা শুরু করতে পারেন। পাইথন একটি উদাহরণ। অন্যান্য উদাহরণগুলি হ'ল সি ++ -> জাভা, জাভা -> স্কালা, কমন লিস্প -> ক্লোজার, সি ++ -> ডি কিছু ভাষাগুলি অনির্দিষ্ট সময়ের জন্য বৃদ্ধি পায় কারণ তাদের সম্প্রদায়টি নিশ্চিত যে তাদের প্রিয় ভাষা একমাত্র সত্য ভাষা এবং তারা এটি চায় সমস্ত সম্ভাব্য অ্যাপ্লিকেশন অঞ্চলের জন্য উপযুক্ত হতে। অবশ্যই, এই প্রত্যাশা বাস্তববাদী নয়।
জর্জিও
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.