質問: この質問はあくまでも返却値の記述の中に名前候補を追加する方法についてなので返却値の記述自体を避け (たとえば何らかの方法で推論させる等) たり、特殊化やオーバーロードによって個別に対処するような話題を広げる提案はしないでください。
回答: レギュレーション違反かもしれませんが、グローバル名前空間は汚染しない解法です: ``` // いったん detail 名前空間内で実装しておき... namespace detail { using ns2::bar; template auto baz(T&& obj) -> decltype(bar(std::forward(obj))) { return bar(std::forward(obj)); } } // namespace detail // グローバル名前空間に baz 関数を導入 using detail::baz; int main(void) { baz(ns1::foo()); baz(123); return 0; } ```