#include <iostream>
#include <type_traits>
using namespace std;
template<class... Ts>
void get_range(){}
auto x = [](auto){};
template<class... Ts, class F>
void update(F f){
static_assert(sizeof...(Ts) == 2, "");
static_assert(std::is_same<decltype(f), decltype(x)>{}, "");
get_range<Ts...>();
}
int main() {
update<int,float>(x);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTxjbGFzcy4uLiBUcz4Kdm9pZCBnZXRfcmFuZ2UoKXt9CgphdXRvIHggPSBbXShhdXRvKXt9OwoKdGVtcGxhdGU8Y2xhc3MuLi4gVHMsIGNsYXNzIEY+CnZvaWQgdXBkYXRlKEYgZil7CglzdGF0aWNfYXNzZXJ0KHNpemVvZi4uLihUcykgPT0gMiwgIiIpOwoJc3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoZiksIGRlY2x0eXBlKHgpPnt9LCAiIik7CglnZXRfcmFuZ2U8VHMuLi4+KCk7Cn0KCmludCBtYWluKCkgewoJCgl1cGRhdGU8aW50LGZsb2F0Pih4KTsKCXJldHVybiAwOwp9