trailing return type

#include <iostream>
using namespace std;

auto func()->int{
 return 3;
}

int main(){
 cout << func();
}

出力結果

3

・・・オイコラ。絶対コレ、ラムダ式のついでに実装しただけだろ。
返り値の型を可変にしたいならtemplateでいいし、そもそもコレじゃ実現できない。
なんの為にあるんだ? コレ。
retuenした型に応じてautoで自動的に型推論するならともかく、明示的に指定できることにどういう意味があるんだろう?
誰か知ってたら教えてくれぇ。