#include <stdio.h>
#include <initializer_list>
struct A{
void operator=(std::initializer_list<int> a){printf("int[%zu]:",a.size());for (auto x:a) printf(" %d",x); printf("\n");}
void operator=(float a){printf("float: %.1f\n",a);}
};
struct B:A{
using A::operator=;
template <typename T>
void operator=(T x){
printf("+");
A::operator=(x);
}
//void operator=(std::initializer_list<int>);
//void operator=(float);
};
int main() {
A a;
a={1,2,5};
a=5.6;
B b;
b={1,5,6};
b=4.7;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxpbml0aWFsaXplcl9saXN0PgoKc3RydWN0IEF7Cgl2b2lkIG9wZXJhdG9yPShzdGQ6OmluaXRpYWxpemVyX2xpc3Q8aW50PiBhKXtwcmludGYoImludFslenVdOiIsYS5zaXplKCkpO2ZvciAoYXV0byB4OmEpIHByaW50ZigiICVkIix4KTsgcHJpbnRmKCJcbiIpO30KCXZvaWQgb3BlcmF0b3I9KGZsb2F0IGEpe3ByaW50ZigiZmxvYXQ6ICUuMWZcbiIsYSk7fQp9OwoKc3RydWN0IEI6QXsKCXVzaW5nIEE6Om9wZXJhdG9yPTsKCXRlbXBsYXRlIDx0eXBlbmFtZSBUPgoJdm9pZCBvcGVyYXRvcj0oVCB4KXsKCQlwcmludGYoIisiKTsKCQlBOjpvcGVyYXRvcj0oeCk7Cgl9CgkvL3ZvaWQgb3BlcmF0b3I9KHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxpbnQ+KTsKCS8vdm9pZCBvcGVyYXRvcj0oZmxvYXQpOwp9OwoKCmludCBtYWluKCkgewoKCUEgYTsKCWE9ezEsMiw1fTsKCWE9NS42OwoKCUIgYjsKCWI9ezEsNSw2fTsKCWI9NC43OwoKfQo=