テンプレートのコンテキストでは、次の「参照の折りたたみ」ルールが適用されます。
template <typename T>
void foo(T && t)
{
//T& & -> T&
//T& && -> T&
//T&& & -> T&
//T&& && -> T&&
}
なぜ言語は「ユニバーサル参照」がconst
修飾子を持つことを禁止するのですか?
template <typename T>
void foo(T const && t)
型が参照に解決された場合 (4 つのケースのうち 3 つ) は意味があるように思われます。
このアイデアは、言語の他の設計面と相容れないと確信していますが、全体像を完全に把握することはできません。