.. title:: clang-tidy - fuchsia-trailing-return

fuchsia-trailing-return
=======================

Functions that have trailing returns are disallowed, except for those using
``decltype`` specifiers and lambda with otherwise unutterable return types.

For example:

.. code-block:: c++

  // No warning
  int add_one(const int arg) { return arg; }

  // Warning
  auto get_add_one() -> int (*)(const int) {
    return add_one;
  }

Exceptions are made for lambdas and ``decltype`` specifiers:

.. code-block:: c++

  // No warning
  auto lambda = [](double x, double y) -> double {return x + y;};

  // No warning
  template <typename T1, typename T2>
  auto fn(const T1 &lhs, const T2 &rhs) -> decltype(lhs + rhs) {
    return lhs + rhs;
  }


See the features disallowed in Fuchsia at https://fuchsia.googlesource.com/zircon/+/master/docs/cxx.md
