【发布时间】:2017-04-20 13:35:46
【问题描述】:
在用 gcc7 测试 C++17 推导行为时,我发现这个例子失败了:
template<class T>
struct S{
S(T&& v){}
};
int i=10;
auto v = S(i);
根据我从cpp reference 读到的内容,我认为v 应该是S<int &> 类型。尽管如此,gcc7 并没有编译这段代码,抱怨 int& 不能绑定到 int &&(通用引用机制失败)。
所以我的问题是:
gcc7 是否应该将
v推导出为S<int&>类型?工作草案标准中的自动扣除指南在哪里描述?
【问题讨论】:
-
考虑到GCC第7版还没有发布,肯定会有bug。如果这是其中之一,我不知道。您是否尝试过在 C++17 模式下使用 GCC 6(GCC 6 支持大部分 C++17)?
-
GCC6 中没有实现推导指南。我只是想知道是cpp引用还是GCC7是对的,我自己无法判断,因为我在标准中没有找到主菜...
-
请注意,cppreference 确实涵盖了这种情况。这是该页面上的最后一个示例。 Cubbi 和 TC 不要乱来:-)
-
谢谢,我已经修改了文字,说这是我对cpp引用的理解,而不是直接的cpp引用......这看起来像重言式。