#include namespace details { // implement add_pointers function template here } template struct add_pointers { using type = decltype(details::add_pointers_helper()); }; int main() { static_assert(std::is_same_v::type, int>, "int + int = int"); static_assert(std::is_same_v::type, int*>, "int + int* = int*"); static_assert(std::is_same_v::type, int**>, "int* + int* = int**"); static_assert(std::is_same_v::type, int***>, "int** + int* = int**"); static_assert(std::is_same_v::type, int*****>, "int** + int*** = int*****"); }