#include <type_traits>
/* Указатель на функцию void (void) */
typedef void (*base_func_ptr_t)(void);
/* Указатель на массив из десяти base_func_ptr_t */
typedef base_func_ptr_t (*arr_ptr_t)[10];
/* Указатель на функцию, которая принимает и возвращает указатель
* на массив из десяти base_func_ptr_t */
arr_ptr_t (*fptr)(arr_ptr_t);
void (* (* (*ffptr)(void (* (*)[10])()))[10])();
int main()
{
static_assert( std::is_same<decltype(fptr), decltype(ffptr)>::value == true, "oops!" );
}
I2luY2x1ZGUgPHR5cGVfdHJhaXRzPgogCi8qINCj0LrQsNC30LDRgtC10LvRjCDQvdCwINGE0YPQvdC60YbQuNGOIHZvaWQgKHZvaWQpICovCnR5cGVkZWYgdm9pZCAoKmJhc2VfZnVuY19wdHJfdCkodm9pZCk7CiAKLyog0KPQutCw0LfQsNGC0LXQu9GMINC90LAg0LzQsNGB0YHQuNCyINC40Lcg0LTQtdGB0Y/RgtC4IGJhc2VfZnVuY19wdHJfdCAqLwp0eXBlZGVmIGJhc2VfZnVuY19wdHJfdCAoKmFycl9wdHJfdClbMTBdOwogCi8qINCj0LrQsNC30LDRgtC10LvRjCDQvdCwINGE0YPQvdC60YbQuNGOLCDQutC+0YLQvtGA0LDRjyDQv9GA0LjQvdC40LzQsNC10YIg0Lgg0LLQvtC30LLRgNCw0YnQsNC10YIg0YPQutCw0LfQsNGC0LXQu9GMCiAqINC90LAg0LzQsNGB0YHQuNCyINC40Lcg0LTQtdGB0Y/RgtC4IGJhc2VfZnVuY19wdHJfdCAqLwphcnJfcHRyX3QgKCpmcHRyKShhcnJfcHRyX3QpOwogCnZvaWQgKCogKCogKCpmZnB0cikodm9pZCAoKiAoKilbMTBdKSgpKSlbMTBdKSgpOwogCmludCBtYWluKCkKewogICBzdGF0aWNfYXNzZXJ0KCBzdGQ6OmlzX3NhbWU8ZGVjbHR5cGUoZnB0ciksIGRlY2x0eXBlKGZmcHRyKT46OnZhbHVlID09IHRydWUsICJvb3BzISIgKTsKfQ==