auto test() -> decltype(???) { return ???; }
は激しくコード重複する。

関数の戻り値型推論はよ!