c++ - কোনও অবজেক্ট অবিচ্ছেদ্য বা না হয় বা শ্রেণির ধরণ কিনা তা জানার কী লাভ?




templates (2)

হ্যালো আমি Cppreferences.com এ এরকম অনেক উদাহরণ দেখেছি:

std::is_class<T>
std::is_integral

ইত্যাদি। আমি জানি যদি আমি কোডটি চালিত করি তবে উদাহরণস্বরূপ আমি true বা false । তবে তাতে কী লাভ? উদাহরণস্বরূপ অবজেক্টটি ক্লাসের ধরণের কিনা তা জানা?

#include <iostream>
#include <type_traits>

struct A {};
class B {};
enum class C {};

int main()
{
    std::cout << std::boolalpha;
    std::cout << std::is_class<A>::value << '\n';
    std::cout << std::is_class<B>::value << '\n';
    std::cout << std::is_class<C>::value << '\n';
    std::cout << std::is_class<int>::value << '\n';
}

আউটপুট:

true
true
false
false
  • আমি এটি ব্যবহার করে একটি বাস্তব উদাহরণের জন্য অনুসন্ধান করেছি ( is_class , is_integral , is_arithmetic , ...) তবে সমস্ত টিউটোরিয়ালটি কেবল হতাশ উদাহরণটি দেখায়: কেবল true বা false

  • এই টেম্পলেটগুলি ব্যবহার করে কেউ কি আমাকে একটি ছোট্ট দরকারী উদাহরণ দিয়ে সহায়তা করতে পারেন?


এটি কনসোলে লেখার জন্য নয়, এটি নিশ্চিতভাবে।

আরও বিস্তৃতভাবে আপনি জিজ্ঞাসা করছেন: ধরণের বৈশিষ্ট্যের বিন্দুটি কী?

উত্তরটি হ'ল টেমপ্লেট রূপক । উদাহরণস্বরূপ, আমি একটি টেম্পলেট বিশেষীকরণ তৈরি করতে পারি যা অবিচ্ছেদ্য ধরণের জন্য একটি কাজ করে এবং অন্যটি অ-ইন্টিগ্রাল টাইপের জন্য।

জেসেকের মতোই অ্যারন বুলম্যানের বৈশিষ্ট্যগুলি টাইপ করার একটি সহজ ভূমিকা রয়েছে

আমার মতে, এই জিনিসগুলির বেশিরভাগ ব্যবহার ব্যাকগ্রাউন্ড যন্ত্রপাতিগুলির অংশ হিসাবে দুর্দান্ত বৈশিষ্ট্য এবং শ্রেণি এবং ইউটিলিটিগুলির (যেমন গ্রন্থাগারে) প্রয়োগের মধ্যেই সমাহিত হবে found

আরও পড়া:

  • সি ++ প্রকারের বৈশিষ্ট্য
  • বৈশিষ্ট্য ক্লাসগুলি কীভাবে কাজ করে এবং তারা কী করে?

সেই প্রথমটিতে রাইটফোর্ডের উত্তর কখন বৈশিষ্ট্য কার্যকর হয় তার দুর্দান্ত উদাহরণ দেয়:

উদাহরণস্বরূপ, std::copy একটি বাস্তবায়ন যখন স্পষ্ট লুপের পরিবর্তে অভ্যন্তরীণভাবে স্টডি std::memcpy ব্যবহার করতে পারে যখন পুনরাবৃত্তিগুলি পিওডিগুলিতে পয়েন্টার হয়। এটি SFINAE দিয়ে অর্জন করা যেতে পারে।


এটি টেমপ্লেট মেটা প্রোগ্রামিংয়ের জন্য। যখন আপনার কোনও ধারণা নেই যে শেষ-ব্যবহারকারী কোনও ধরণের (গুলি) টেমপ্লেটে প্রবেশ করবে। কখনও কখনও এটি ত্রুটিগুলি জানাতে হয়, কখনও কখনও এটি পাস হওয়া ধরণেরগুলিতে বিশেষজ্ঞ করতে হয়। কখনও কখনও এটি একটি সংমিশ্রণ।

সিপ্রেফারেন্স.কমের (উদাহরণস্বরূপ https://en.cppreference.com/w/cpp/types/is_enum ) এ দেখা উদাহরণগুলি খুব সরলিকৃতের চেয়ে বেশি এবং কেবলমাত্র কীভাবে অ-সাধারণ পদ্ধতিতে বৈশিষ্ট্যটি ব্যবহার করতে হয় তা দেখায়। আপনি প্রায়শই কখনও কখনও কোনও সরল (অ-টেম্পলেট ফাংশন বা শ্রেণি) সরাসরি এই বৈশিষ্ট্যগুলি ব্যবহার করবেন না।





templates