আপনি যদি নিজের পরিবর্তন করতে সক্ষম হন Class
তবে আপনি একটি টেম্প্লেটেড কনভার্টিং কনস্ট্রাক্টর যুক্ত করতে পারেন। তারপরে আপনি আপনার উদাহরণে লিখিতভাবে মন্তব্য করা লাইনের সংকলন করতে সক্ষম হবেন। যাইহোক, সাধারণভাবে উপযুক্ত কারণ ব্যতীত অন্তর্নিহিত রূপান্তরগুলি ব্যবহার করার পরামর্শ দেওয়া হয় না কারণ তারা হার্ড-টু স্পট বাগ (সিএফ + সি কোর গাইডলাইন ) এর ফলে তৈরি হতে পারে।
#include <string>
#include <iostream>
template <typename Type>
struct Class
{
Type data;
Class(Type data) : data(data) { }
template<typename Other>
Class(Other other_data) : data(other_data) {}
};
int main()
{
Class<std::string> a = std::string("abc");
Class<std::string> b = "abc";
Class<std::string> c = a;
std::cout << b.data << std::endl;
return 0;
}
আপনি যদি C ++ 14 ব্যবহার করতে পারেন তবে আপনি std::literals::string_literals::operator""s
রূপান্তরকারী কনস্ট্রাক্টরটি ব্যবহার এবং মুছে ফেলতে পারেন। তারপরে, আপনার লাইনটি দেখতে এমন হবে:
using namespace std::literals;
Class<std::string> b = "abc"s;
লাইভ কোড এখানে ।