Visual Studio C ++コンパイラが列挙型をテンプレートパラメータとして拒否するのはなぜですか?

ハリーワグスタッフ:

Microsoft Visual Studio 2019コンパイラ(cl.exe)を使用していますが、テンプレートが特定の列挙値に特化されているテンプレートパラメータとして列挙型を使用することに関連して、ClangとGCCの両方で受け入れられる一部のコードを拒否しています。

enum Foo {
    Bar,
    Baz
};

template<enum Foo = Bar> class Clazz {

};

template<> class Clazz<Baz> {

};

VC ++コンパイラは、テンプレートの特殊化に関するいくつかのエラーを報告します。

<source>(10): error C2440: 'specialization': cannot convert from 'Foo' to 'Foo'
<source>(10): note: Conversion to enumeration type requires an explicit cast (static_cast, C-style cast or function-style cast)

このコードは、ClangとGCCの両方でエラーなしで受け入れられます。これはVC ++のバグですか?

テンプレート宣言の「enum Foo」を単に「int」に置き換えると、エラーが発生しなくなります。ただし、大規模なコードベースをVC ++に移植しようとしているため、これは許容できる回答ではありません。

溶鉱炉 :

標準準拠モードのコンパイラオプション/permissive-使用して標準準拠のコンパイラの動作を指定すると、コードがコンパイルされます。

このオプションは、コマンドラインまたは「プロジェクトプロパティページ-> C / C ++->言語->適合モード」で追加できます。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

テンプレートの非型パラメーターとしてのC文字列はgcc6.3で機能しますが、Visual Studio 2017(x64の場合は19.16.27027.1)では機能しません。

分類Dev

Visual Studioでテンプレート関数(C ++)でプライベートメンバーを使用できるのはなぜですか?

分類Dev

Visual Studio 2017を更新し、コンパイルエラーC7510が発生するようになりました:「コールバック」:依存テンプレート名の使用には「テンプレート」をプレフィックスとして付ける必要があります

分類Dev

Visual Studio2013のC ++プロジェクトでGoogleテストをコンパイルしてリンクするには、NuGetパッケージマネージャーによってGtestがインストールされていますか?

分類Dev

このCコードがCodeblocksでコンパイルされるのに、Visual Studioではコンパイルされないのはなぜですか?

分類Dev

Visual Studio 2017を使用して、C ++でパラメーター化されたオブジェクトの配列に一意のポインターを使用するにはどうすればよいですか?

分類Dev

Visual Studio C ++パラメーターのインデント

分類Dev

Visual Studio 2015:ランタイムライブラリなしでC / C ++をコンパイルする

分類Dev

Visual Studio / C ++でfbxSDKを使用してプロジェクトをビルドするときにエラーをコンパイルします

分類Dev

Visual Studio C ++で実際のコンパイルエラーを検出する

分類Dev

C ++で、クラスコンストラクターがVisual Studioによって「2+オーバーロード」を持っていると記述されているのはなぜですか?

分類Dev

ビルド後のイベントとしてtlbexpコマンドを呼び出して、Visual Studio 2019 IDEのC#EXEからタイプライブラリをエクスポートするにはどうすればよいですか?

分類Dev

Visual Studio 2015(C ++):最初のビルドエラー(最初のプロジェクトではない)でコンパイルを停止します

分類Dev

Visual Studio CodeでCプログラムをコンパイルする方法は?

分類Dev

Visual StudioなしでVisual C ++コマンドラインコンパイラをダウンロードできますか?

分類Dev

このリスト初期化子の動作は、Visual Studio C#コンパイラのバグとして報告する必要がありますか?

分類Dev

C ++コンパイラ(Microsoft Visual Studio)を必要としないNode.JS用のOracleドライバーはありますか?

分類Dev

Visual Studio 2019 c ++の概念のサポート-エラーで正常にコンパイルされます:なぜですか?

分類Dev

Visual Studioがテンプレートクラスで適切なコンストラクターを選択できないのはなぜですか?

分類Dev

Visual Studio / C ++:逆イテレータはコンパイルされますが、実行時にエラーがスローされます

分類Dev

Visual Studio2013で単純なCコードをコンパイルする

分類Dev

Visual Studio CodeからC#コンパイラの警告を除外する

分類Dev

CのMalloc、Visual Studio

分類Dev

Visual Studioを使用せずにc#プログラムをコンパイルして実行するにはどうすればよいですか?

分類Dev

クロスプラットフォームのオープンソースUIに依存しないC#クラスライブラリに選択するVisual Studio 2017プロジェクトタイプとその理由は何ですか?

分類Dev

{c ++}プログラムは、Visual Studioのないコンピューターで実行すると、エラー0xc00007bを送信します。適切なdllが配置されている

分類Dev

Visual Studio C#プロジェクトテンプレート:$ safeprojectname $パラメーター

分類Dev

Visual Studio 2017のコンパイラを使用して、C ++ 17でラムダを使用してKevlinHenneyのFizzbuzzをコンパイルする

分類Dev

Visual Studio 2017 extern "C"でのテンプレートの使用に関する不適切なエラー

Related 関連記事

  1. 1

    テンプレートの非型パラメーターとしてのC文字列はgcc6.3で機能しますが、Visual Studio 2017(x64の場合は19.16.27027.1)では機能しません。

  2. 2

    Visual Studioでテンプレート関数(C ++)でプライベートメンバーを使用できるのはなぜですか?

  3. 3

    Visual Studio 2017を更新し、コンパイルエラーC7510が発生するようになりました:「コールバック」:依存テンプレート名の使用には「テンプレート」をプレフィックスとして付ける必要があります

  4. 4

    Visual Studio2013のC ++プロジェクトでGoogleテストをコンパイルしてリンクするには、NuGetパッケージマネージャーによってGtestがインストールされていますか?

  5. 5

    このCコードがCodeblocksでコンパイルされるのに、Visual Studioではコンパイルされないのはなぜですか?

  6. 6

    Visual Studio 2017を使用して、C ++でパラメーター化されたオブジェクトの配列に一意のポインターを使用するにはどうすればよいですか?

  7. 7

    Visual Studio C ++パラメーターのインデント

  8. 8

    Visual Studio 2015:ランタイムライブラリなしでC / C ++をコンパイルする

  9. 9

    Visual Studio / C ++でfbxSDKを使用してプロジェクトをビルドするときにエラーをコンパイルします

  10. 10

    Visual Studio C ++で実際のコンパイルエラーを検出する

  11. 11

    C ++で、クラスコンストラクターがVisual Studioによって「2+オーバーロード」を持っていると記述されているのはなぜですか?

  12. 12

    ビルド後のイベントとしてtlbexpコマンドを呼び出して、Visual Studio 2019 IDEのC#EXEからタイプライブラリをエクスポートするにはどうすればよいですか?

  13. 13

    Visual Studio 2015(C ++):最初のビルドエラー(最初のプロジェクトではない)でコンパイルを停止します

  14. 14

    Visual Studio CodeでCプログラムをコンパイルする方法は?

  15. 15

    Visual StudioなしでVisual C ++コマンドラインコンパイラをダウンロードできますか?

  16. 16

    このリスト初期化子の動作は、Visual Studio C#コンパイラのバグとして報告する必要がありますか?

  17. 17

    C ++コンパイラ(Microsoft Visual Studio)を必要としないNode.JS用のOracleドライバーはありますか?

  18. 18

    Visual Studio 2019 c ++の概念のサポート-エラーで正常にコンパイルされます:なぜですか?

  19. 19

    Visual Studioがテンプレートクラスで適切なコンストラクターを選択できないのはなぜですか?

  20. 20

    Visual Studio / C ++:逆イテレータはコンパイルされますが、実行時にエラーがスローされます

  21. 21

    Visual Studio2013で単純なCコードをコンパイルする

  22. 22

    Visual Studio CodeからC#コンパイラの警告を除外する

  23. 23

    CのMalloc、Visual Studio

  24. 24

    Visual Studioを使用せずにc#プログラムをコンパイルして実行するにはどうすればよいですか?

  25. 25

    クロスプラットフォームのオープンソースUIに依存しないC#クラスライブラリに選択するVisual Studio 2017プロジェクトタイプとその理由は何ですか?

  26. 26

    {c ++}プログラムは、Visual Studioのないコンピューターで実行すると、エラー0xc00007bを送信します。適切なdllが配置されている

  27. 27

    Visual Studio C#プロジェクトテンプレート:$ safeprojectname $パラメーター

  28. 28

    Visual Studio 2017のコンパイラを使用して、C ++ 17でラムダを使用してKevlinHenneyのFizzbuzzをコンパイルする

  29. 29

    Visual Studio 2017 extern "C"でのテンプレートの使用に関する不適切なエラー

ホットタグ

アーカイブ