3

我正在使用 boost asio 协程,我想使用新的文件系统 TS (-stdc++fs),所以我升级到 GCC 6-20151025 快照。它工作得很好。但是后来我打开了 -std=c++1z 并且在 boost 的源代码中出现了一个错误。我隔离了错误,这是一个最小的例子:

// { dg-do compile }
// { dg-options "-std=c++1z" }

template< typename T >
class A
{
};

template<>
class A< void >
{
        template< typename X >
        friend class A;
};

它使用 -std=c++14 编译良好,但为 -std=c++1z 生成以下错误:

error: specialization of ‘template<class T> class A’ must appear at namespace scope
  friend class A;
               ^

我追踪了源中的错误,并且在 pt.c 中新引入的函数“maybe_new_partial_specialization”中的行为似乎有所不同。特别是在仅在概念 TS处于活动状态时才激活的情况。

在将其报告为错误之前,我想先检查这是否是 Concepts TS/C++1z 中的预期行为。

谢谢你。

编辑:根据下面的答案,事实证明这是一个错误,因此我在这里报告了它。

4

1 回答 1

2

概念文件的附件 A 总结了向后兼容性问题。它仅包含一个条目:

在此处输入图像描述

您遇到的行为不是故意的,是回归,请报告。

于 2015-10-31T18:32:38.003 回答