নিম্নলিখিত প্রোগ্রামটি কি সুগঠিত?
#include <vector>
struct A {
explicit A(int) {}
};
int main() {
std::vector<int> vi = {1, 2, 3, 4, 5};
std::vector<A> va(vi.begin(), vi.end());
}
সি ++ 17 অনুসারে [সিকোয়েন্স.আরকিমিটস], এর জন্য প্রয়োজনীয়
X u(i, j);
X
সিকোয়েন্স কনটেইনারটি কোথায় , তা হ'ল:
T
থেকে হতেEmplaceConstructible
হবে ।X
*i
তবে পূর্ববর্তী অনুচ্ছেদে বলা হয়েছে যে:
i
এবংj
পুনরাবৃত্তকারীদের ইনপুট পুনরাবৃত্তির প্রয়োজনীয়তাগুলি সন্তুষ্ট করে বোঝায় এবং এগুলিকে স্পষ্টত রূপান্তরিত করতে পারেনvalue_type
,
সুতরাং এটি আমার কাছে মনে হয় যে উভয় প্রয়োজনীয়তা মেটানো দরকার: পরিসরের মানের ধরণটি ধারকটির মান ধরণের ক্ষেত্রে স্পষ্টত রূপান্তরিত হতে হবে এবং EmplaceConstructible
সন্তুষ্ট থাকতে হবে (যার অর্থ বরাদ্দকারী অবশ্যই প্রয়োজনীয় সূচনা করতে সক্ষম হবে) । যেহেতু int
সুস্পষ্টভাবে রূপান্তরযোগ্য নয় A
, তাই এই প্রোগ্রামটি গঠনমূলক হওয়া উচিত।
তবে আশ্চর্যের বিষয়, এটি জিসিসির অধীনে সংকলিত বলে মনে হচ্ছে ।