সি ++ 17 এ নতুন বৈশিষ্ট্যগুলি কী কী?


1007

সি ++ 17 এখন বৈশিষ্ট্য সম্পূর্ণ, তাই বড় পরিবর্তনগুলি অনুভব করার সম্ভাবনা কম। সি ++ 17 এর জন্য কয়েকশ প্রস্তাব অগ্রণী করা হয়েছিল।

এই বৈশিষ্ট্যগুলির মধ্যে কোনটি সি ++ এ সি ++ এ যুক্ত হয়েছিল?

একটি সি ++ সংকলক ব্যবহার করে যখন "সি ++ 1 জ" সমর্থন করে, যখন সংকলক সি ++ 17 তে আপডেট হয় তখন সেই বৈশিষ্ট্যগুলির মধ্যে কোনটি উপলব্ধ হতে পারে?


26
ক্ল্যাং অনুযায়ী বৈশিষ্ট্যগুলির সম্পূর্ণ তালিকা: গ্রন্থাগার , মূল ভাষা ।
— কেরেক এসবি

3
এই ব্লগে bost একটা চমৎকার সারসংক্ষেপ রয়েছে: bfilipek.com/2017/01/cpp17features.html
— ATB

13
সি ++ 14 থেকে সি ++ 17 এ বড় পরিবর্তনগুলির তালিকার জন্য সি ++ 14 এবং সি ++ 17 ডিআইএস (P0636r0) নথির মধ্যে সরকারী পরিবর্তনগুলি দেখুন ।
— জোটিক

1
@ রাঘবনাভদা দুর্দান্ত! সি ++ 20 বিভাগটি কি বজায় রাখা হচ্ছে? এখানে # 53 রয়েছে , তবে এটি বন্ধ ...
— এলএফ

এই সাইটের প্রতিটি বিষয় en.cppreferences.com/w/cpp প্রয়োজনীয় সংস্করণ সহ চিহ্নিত করা আছে।
— jw_

উত্তর:


1266

ভাষার বৈশিষ্ট্য সমূহ:

টেমপ্লেট এবং জেনেরিক কোড

ল্যামডা

আরোপ করা

সিনট্যাক্স পরিষ্কার

ক্লিনারটি মাল্টি-রিটার্ন এবং প্রবাহ নিয়ন্ত্রণ

  • কাঠামোবদ্ধ বাঁধাই

    • মূলত, প্রথম- std::tieসহauto
    • উদাহরণ:
      • const auto [it, inserted] = map.insert( {"foo", bar} );
      • যেটি ফেরত দেয় তার থেকে ভেরিয়েবল itএবং insertedছাড়ের প্রকারের সাথে তৈরি করে ।pairmap::insert
    • টিপল / জুড়ি-পছন্দ & std::arrayগুলি এবং তুলনামূলকভাবে সমতল স্ট্রাক্টগুলির সাথে কাজ করে
    • আসলে নামে গঠিত বাইন্ডিং মান মধ্যে
  • if (init; condition) এবং switch (init; condition)

    • if (const auto [it, inserted] = map.insert( {"foo", bar} ); inserted)
    • এমন কেসগুলিতে প্রসারিত হয় if(decl)যেখানে সংবেদনশীলভাবে declরূপান্তরিত থেকে বুল হয় না।
  • লুপগুলির জন্য পরিসর-ভিত্তিক সাধারণকরণ

    • প্রেরণাদির জন্য বেশিরভাগ সমর্থন বলে মনে হয়, বা শেষ পুনরাবৃত্তকারীগুলি যা প্রারম্ভিক পুনরাবৃত্তকারীগুলির মতো একই ধরণের নয়, যা নাল-টার্মিনেটেড লুপগুলি এবং এ জাতীয় পছন্দগুলিতে সহায়তা করে।
  • কনসেক্সট্রপ যদি

    • প্রায় জেনেরিক কোডটি সহজ করার জন্য অনেক অনুরোধ করা বৈশিষ্ট্য।

বিবিধ

গ্রন্থাগার সংযোজন:

তথ্যের ধরণ

  • std::variant<Ts...>

    • প্রায় সর্বদা সর্বদা খালি খালি আমি চেক করেছি?
    • ট্যাগ ইউনিয়ন টাইপ
    • {ভয়ঙ্কর | দরকারী}
  • std::optional

    • হতে পারে কিছু একটা ধরে আছে
    • হাস্যকর কার্যকর
  • std::any

    • যে কোনও একটিকে ধরে রাখে (এটি অনুলিপিযোগ্য)
  • std::string_view

    • std::string রেফারেন্স-থেকে-চরিত্র-অ্যারে বা স্ট্রিংয়ের মতো
    • আর কখনও নেবেন string const&না। এছাড়াও এক হাজার কোটি গুণ দ্রুত পার্সিং করা যায়।
    • "hello world"sv
    • constexpr char_traits
  • std::byte তারা চিবানো চেয়ে বেশি বন্ধ।

    • কোনও পূর্ণসংখ্যা বা অক্ষর নয়, কেবলমাত্র ডেটা

স্টাভ ইনভোক করুন

  • std::invoke
    • কোনও সিনট্যাক্স সহ যে কোনও কলযোগ্য (ফাংশন পয়েন্টার, ফাংশন, সদস্য পয়েন্টার) কল করুন। স্ট্যান্ডার্ড ইনভোক ধারণা থেকে।
  • std::apply
    • একটি ফাংশন-মত এবং একটি tuple লাগে, এবং কল মধ্যে tuple আনপ্যাক।
  • std::make_from_tuple, std::applyঅবজেক্ট কনস্ট্রাকশন প্রয়োগ

  • is_invocable, is_invocable_r,invoke_result

ফাইল সিস্টেম টিএস ভি 1

নতুন অ্যালগরিদম

  • for_each_n

  • reduce

  • transform_reduce

  • exclusive_scan

  • inclusive_scan

  • transform_exclusive_scan

  • transform_inclusive_scan

  • থ্রেডিংয়ের উদ্দেশ্যে যুক্ত করা হয়েছে, যদি আপনি সেগুলি থ্রেড ব্যবহার না করেন তবেও উন্মুক্ত

থ্রেডিং

(অংশ) লাইব্রেরি ফান্ডামেন্টাল টিএস ভি 1 উপরে বা নীচে আচ্ছাদিত নয়

ধারক উন্নতি

স্মার্ট পয়েন্টার পরিবর্তন

অন্যান্য stdডেটাটাইপ উন্নতি:

বিবিধ

বৈশিষ্ট

অসমর্থিত

আইসোক্প.অর্গ.এর C ++ 14 সাল থেকে পরিবর্তনের একটি স্বাধীন তালিকা রয়েছে; এটি আংশিকভাবে স্তম্ভিত করা হয়েছে।

প্রাকৃতিকভাবে টিএসের কাজ সমান্তরালে অব্যাহত থাকে, তাই কিছু টিএস রয়েছে যা বেশ-পাকা নয় যা পরবর্তী পুনরাবৃত্তির জন্য অপেক্ষা করতে হবে। পরবর্তী পুনরাবৃত্তির জন্য লক্ষ্যটি পূর্বের পরিকল্পনা অনুসারে সি ++ ২০, কিছু গুজব সূচিত হিসাবে সি ++ 19 নয়। সি ++ 1O এড়ানো হয়েছে।

এই রেডডিট পোস্ট এবং এই রেডডিট পোস্ট থেকে নেওয়া প্রাথমিক তালিকা , গুগলিংয়ের মাধ্যমে বা উপরের আইসোক্প.org পৃষ্ঠার লিঙ্কগুলি যুক্ত added

এসডি -6 বৈশিষ্ট্য-পরীক্ষার তালিকা থেকে অতিরিক্ত এন্ট্রি নেওয়া হয়েছে ।

ঝাঁকুনির বৈশিষ্ট্য তালিকা এবং গ্রন্থাগারের বৈশিষ্ট্য তালিকাটি স্তম্ভিত হওয়ার পরে রয়েছে। এটি নির্ভরযোগ্য বলে মনে হচ্ছে না, কারণ এটি সি ++ 1 জেড, সি ++ 17 নয়।

এই স্লাইডগুলির অন্য কোথাও কিছু বৈশিষ্ট্য রয়েছে।

"যা অপসারণ করা হয়েছিল" জিজ্ঞাসা করা হয়নি, এখানে সি ++ থেকে সি ++ 17 এ মুছে ফেলা কয়েকটি জিনিসের ((বেশিরভাগ?) আগের অবচয় করা) একটি সংক্ষিপ্ত তালিকা এখানে রয়েছে:

সরানো হয়েছে:

সেখানে বক্তব্য ছিল। কোডে এগুলির কোনও প্রভাব আছে কিনা তা আমি নিশ্চিত নই, বা যদি সেগুলি স্ট্যান্ডার্ডটিতে কেবল পরিষ্কার হয়:

কাগজগুলি উপরে এখনও একীকরণ করা হয়নি:

বৈশিষ্ট পরিবর্তন:

আরও উল্লেখ:


2
ওম, memory_order_consumeসরকারীভাবে অবচিত বলে মনে হচ্ছে না। এটি কেবল নোটে নিরুৎসাহিত করা হয়েছে। সম্ভবত এটি উল্লেখ করা বোধগম্য হয় (উদাহরণস্বরূপ একটি অনুবর্তনযোগ্য প্রথম বন্ধনী সহ)?
— এলএফ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.