Ниже не удается скомпилировать как gcc, так и clang
#include <type_traits>
int foo();
int main()
{
using R = std::result_of_t<decltype(foo)()>; // error
}
Ошибка обоих компиляторов связана с незаконностью объявления функции, возвращающей функцию. Но я не объявляю такую функцию - я просто пытаюсь написать ее тип - так как это ожидает result_of
. Неужели это еще плохо сформировано?