.. 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
