সি ++ 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.