@@ -2319,6 +2319,10 @@ struct __declspec(empty_bases) produce_dispatch_to_overridable<T, D, %>
23192319 {
23202320 %(std::nullptr_t = nullptr) noexcept {}
23212321 %(void* ptr, take_ownership_from_abi_t) noexcept : Windows::Foundation::IInspectable(ptr, take_ownership_from_abi) {}
2322+ %(% const&) noexcept = default;
2323+ %(%&&) noexcept = default;
2324+ %& operator=(% const&) & noexcept = default;
2325+ %& operator=(%&&) & noexcept = default;
23222326%% };
23232327)" ;
23242328
@@ -2328,6 +2332,14 @@ struct __declspec(empty_bases) produce_dispatch_to_overridable<T, D, %>
23282332 bind<write_interface_requires>(type),
23292333 type_name,
23302334 type_name,
2335+ type_name, // %(T const&)
2336+ type_name, // T(% const&)
2337+ type_name, // %(T&&)
2338+ type_name, // T(%&&)
2339+ type_name, // %& operator=(T const&)
2340+ type_name, // T& operator=(% const&)
2341+ type_name, // %& operator=(T&&)
2342+ type_name, // T& operator=(%&&)
23312343 bind<write_interface_usings>(type),
23322344 bind<write_interface_extensions>(type));
23332345 }
@@ -2342,6 +2354,10 @@ struct __declspec(empty_bases) produce_dispatch_to_overridable<T, D, %>
23422354 {%
23432355 %(std::nullptr_t = nullptr) noexcept {}
23442356 %(void* ptr, take_ownership_from_abi_t) noexcept : Windows::Foundation::IInspectable(ptr, take_ownership_from_abi) {}
2357+ %(% const&) noexcept = default;
2358+ %(%&&) noexcept = default;
2359+ %& operator=(% const&) & noexcept = default;
2360+ %& operator=(%&&) & noexcept = default;
23452361%% };
23462362)" ;
23472363
@@ -2353,6 +2369,14 @@ struct __declspec(empty_bases) produce_dispatch_to_overridable<T, D, %>
23532369 bind<write_generic_asserts>(generics),
23542370 type_name,
23552371 type_name,
2372+ type_name, // %(T const&)
2373+ type_name, // T(% const&)
2374+ type_name, // %(T&&)
2375+ type_name, // T(%&&)
2376+ type_name, // %& operator=(T const&)
2377+ type_name, // T& operator=(% const&)
2378+ type_name, // %& operator=(T&&)
2379+ type_name, // T& operator=(%&&)
23562380 bind<write_interface_usings>(type),
23572381 bind<write_interface_extensions>(type));
23582382 }
@@ -2378,6 +2402,10 @@ struct __declspec(empty_bases) produce_dispatch_to_overridable<T, D, %>
23782402 {%
23792403 %(std::nullptr_t = nullptr) noexcept {}
23802404 %(void* ptr, take_ownership_from_abi_t) noexcept : Windows::Foundation::IUnknown(ptr, take_ownership_from_abi) {}
2405+ %(% const&) noexcept = default;
2406+ %(%&&) noexcept = default;
2407+ %& operator=(% const&) & noexcept = default;
2408+ %& operator=(%&&) & noexcept = default;
23812409 template <typename L> %(L lambda);
23822410 template <typename F> %(F* function);
23832411 template <typename O, typename M> %(O* object, M method);
@@ -2390,10 +2418,18 @@ struct __declspec(empty_bases) produce_dispatch_to_overridable<T, D, %>
23902418 method_signature signature{ get_delegate_method (type) };
23912419
23922420 w.write (format,
2393- type_name,
2421+ type_name, // struct %
23942422 bind<write_generic_asserts>(generics),
23952423 type_name,
23962424 type_name,
2425+ type_name, // %(T const&)
2426+ type_name, // T(% const&)
2427+ type_name, // %(T&&)
2428+ type_name, // T(%&&)
2429+ type_name, // %& operator=(T const&)
2430+ type_name, // T& operator=(% const&)
2431+ type_name, // %& operator=(T&&)
2432+ type_name, // T& operator=(%&&)
23972433 type_name,
23982434 type_name,
23992435 type_name,
@@ -3067,7 +3103,11 @@ struct __declspec(empty_bases) produce_dispatch_to_overridable<T, D, %>
30673103 {
30683104 %(std::nullptr_t) noexcept {}
30693105 %(void* ptr, take_ownership_from_abi_t) noexcept : %(ptr, take_ownership_from_abi) {}
3070- %%% };
3106+ % %(% const&) noexcept = default;
3107+ %(%&&) noexcept = default;
3108+ %& operator=(% const&) & noexcept = default;
3109+ %& operator=(%&&) & noexcept = default;
3110+ %% };
30713111)" ;
30723112
30733113 w.write (format,
@@ -3079,6 +3119,14 @@ struct __declspec(empty_bases) produce_dispatch_to_overridable<T, D, %>
30793119 type_name,
30803120 base_type,
30813121 bind<write_constructor_declarations>(type, factories),
3122+ type_name, // %(T const&)
3123+ type_name, // T(% const&)
3124+ type_name, // %(T%&)
3125+ type_name, // T(%&&)
3126+ type_name, // %& operator=(T const&)
3127+ type_name, // T& operator=(% const&)
3128+ type_name, // %& operator=(T&&)
3129+ type_name, // T& operator=(%&&)
30823130 bind<write_class_usings>(type),
30833131 bind_each<write_static_declaration>(factories, type));
30843132 }
@@ -3092,7 +3140,11 @@ struct __declspec(empty_bases) produce_dispatch_to_overridable<T, D, %>
30923140 {
30933141 %(std::nullptr_t) noexcept {}
30943142 %(void* ptr, take_ownership_from_abi_t) noexcept : %(ptr, take_ownership_from_abi) {}
3095- %%% };
3143+ % %(% const&) noexcept = default;
3144+ %(%&&) noexcept = default;
3145+ %& operator=(% const&) & noexcept = default;
3146+ %& operator=(%&&) & noexcept = default;
3147+ %% };
30963148)" ;
30973149
30983150 w.write (format,
@@ -3103,6 +3155,14 @@ struct __declspec(empty_bases) produce_dispatch_to_overridable<T, D, %>
31033155 type_name,
31043156 base_type,
31053157 bind<write_constructor_declarations>(type, factories),
3158+ type_name, // %(T const&)
3159+ type_name, // T(% const&)
3160+ type_name, // %(T%&)
3161+ type_name, // T(%&&)
3162+ type_name, // %& operator=(T const&)
3163+ type_name, // T& operator=(% const&)
3164+ type_name, // %& operator=(T&&)
3165+ type_name, // T& operator=(%&&)
31063166 bind<write_fast_class_base_declarations>(type),
31073167 bind_each<write_static_declaration>(factories, type));
31083168 }
0 commit comments