template
class C
{};
template
void dummyMe(Container&&)
{};
int main(int argc, char* argv[])
{
C c;
dummyMe(c);
return 0;
}
< /code>
, который не компилируется из-за первого аргумента Dummyme < /code>, который является rvalue-reference. Может ли кто -нибудь объяснить мне в Standardese, почему параметры шаблона шаблона не обжигают ссылки на пересылку и почему это так на простом английском языке. < /p>
p.s. Я наткнулся на это и на эти вопросы, но я не вижу никаких реальных доказательств в ответах. И я не вижу причин, почему это так. Давайте сделаем пример еще проще: < /p>
template
void dummyMe(Container&&)
{};
< /code>
Теперь у нас есть пример, почти идентичный следующим: < /p>
template
void dummyMe(Container&&)
{};
< /code>
Но это обрабатывается совершенно иначе. Почему? Почему контейнер &&
не может рассматриваться как то же самое для шаблона class Container как контейнер && to typename container ?
int main(int argc, char* argv[]) { C c; dummyMe(c); return 0; } < /code>
, который не компилируется из-за первого аргумента Dummyme < /code>, который является rvalue-reference. Может ли кто -нибудь объяснить мне в Standardese, почему параметры шаблона шаблона не обжигают ссылки на пересылку и почему это так на простом английском языке. < /p>
p.s. Я наткнулся на это и на эти вопросы, но я не вижу никаких реальных доказательств в ответах. И я не вижу причин, почему это так. Давайте сделаем пример еще проще: < /p>
template void dummyMe(Container&&) {}; < /code>
Теперь у нас есть пример, почти идентичный следующим: < /p>
template void dummyMe(Container&&) {}; < /code>
Но это обрабатывается совершенно иначе. Почему? Почему контейнер && [/code] не может рассматриваться как то же самое для шаблона class Container как контейнер && to typename container ?