我正在使用boost asio coroutines,我想使用新的文件系统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为active时激活的条件。
我想首先检查这是概念TS / C ++ 1z中的预期行为,然后再将其报告为错误。
谢谢。
编辑:根据下面的答案,结果证明是一个错误,因此我报告了它here。