3

私はブースト 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」で動作が分岐しているようです。特に、Concepts TS がアクティブな場合にのみアクティブになる状態で。

バグとして報告する前に、これが Concepts TS/C++1z で意図された動作であるかどうかを最初に確認したかったのです。

ありがとうございました。

編集:以下の回答に基づいて、それはバグであることが判明したため、ここで報告しました。

4

1 に答える 1

2

下位互換性の問題は、コンセプト ペーパーの付録 A にまとめられています。次の 1 つのエントリのみが含まれます。

ここに画像の説明を入力

発生した動作は意図したものではなく、リグレッションです。報告してください。

于 2015-10-31T18:32:38.003 に答える