这是我之前问题的延续:
以下代码似乎在 Clang 3.7.0 ( demo ) 和 GCC 6.0.0 ( demo ) 中都有效:
template <class T>
using forwarding_reference = T&&;
template <class T>
void foo(forwarding_reference<T>) {}
int main()
{
int i{};
foo(i);
foo(1);
}
编译器是否有权将别名模板替换为转发引用,这可能是一种奇特的编写方式?