আমি আর্গুমেন্ট হিসাবে সি ++ টেমপ্লেট ফাংশনগুলি সহ জড়িত বিধিগুলি সন্ধান করছি।
এটি উদাহরণস্বরূপ প্রদর্শিত হিসাবে সি ++ দ্বারা সমর্থিত:
#include <iostream>
void add1(int &v)
{
v+=1;
}
void add2(int &v)
{
v+=2;
}
template <void (*T)(int &)>
void doOperation()
{
int temp=0;
T(temp);
std::cout << "Result is " << temp << std::endl;
}
int main()
{
doOperation<add1>();
doOperation<add2>();
}
তবে এই কৌশল সম্পর্কে শেখা কঠিন। "টেমপ্লেট আর্গুমেন্ট হিসাবে ফাংশন" এর জন্য গুগলিং খুব বেশি নেতৃত্ব দেয় না। এবং ক্লাসিক সি ++ টেমপ্লেটস সম্পূর্ণ গাইডটি আশ্চর্যরকমভাবে এটিও আলোচনা করে না (কমপক্ষে আমার অনুসন্ধান থেকে নয়)।
আমার কাছে থাকা প্রশ্নগুলি হ'ল এটি বৈধ সি ++ (অথবা কেবলমাত্র কিছু বিস্তৃত সমর্থিত এক্সটেনশন)।
এছাড়াও, এই ধরণের টেম্পলেট আহরণের সময় একই স্বাক্ষরযুক্ত কোনও ফান্টরকে স্বতন্ত্র ফাংশনগুলির সাথে আন্তঃব্যবহারযোগ্যভাবে ব্যবহার করার অনুমতি দেওয়ার কোনও উপায় আছে কি?
নিম্নোক্ত উপরের প্রোগ্রামটিতে কমপক্ষে ভিজ্যুয়াল সি ++ এ কাজ করে না , কারণ বাক্য গঠনটি অবশ্যই স্পষ্টত ভুল। আপনি যদি কোনও কাস্টম তুলনা ক্রিয়াকলাপটি সংজ্ঞায়িত করতে চান তবে কোনও ফাংশন পয়েন্টার বা স্টান্টারের সাথে আপনি যেমন স্ট্যান্ড :: সাজান অ্যালগরিদমকে পাস করতে পারবেন তার অনুরূপ কোনও ফান্টারের জন্য কোনও ফাংশনটি স্যুইচআউট করতে সক্ষম হতে পেরে ভাল লাগবে sort
struct add3 {
void operator() (int &v) {v+=3;}
};
...
doOperation<add3>();
একটি ওয়েব লিঙ্ক বা দুটি, বা সি ++ টেমপ্লেটস বইয়ের একটি পৃষ্ঠায় পয়েন্টার প্রশংসা করা হবে!
-std=gnu++17
। আমি কি ফাংশন পয়েন্টার টেম্পলেট নন-টাইপ আর্গুমেন্ট হিসাবে সি ++ 17 ক্যাপচারহীন ল্যাম্বদা কনস্টেক্সপ্র রূপান্তরকারী অপারেটরের ফলাফলটি ব্যবহার করতে পারি? ।