この3, 4行目が無いとfunction_traits is not a class templateというコンパイル時エラーが出るのですが、これが無いと駄目な理由がわかりません。コンパイラはgcc7です。

#include <iostream>

template <typename Signature>
struct function_traits;

template <typename R> \
struct function_traits<R()> \
{ \
  typedef R return_type; \
};

using namespace std;

function_traits<int()>::return_type main()
{
  cout << "Hello, World!" << endl;
  return 0;
}