私はSFINAEとおもしろいと私は入力をチェックしようとしています入力は様々なタイプの入力から成っています。 clangによって提供されるエラーはあまり役に立ちません。あなたは何か考えていますか?バリディックテンプレートテンプレートとSFINAE
おかげで他の
struct IsFree
{
};
template <typename _Type, typename _State>
struct Input
{
};
template <typename... _Inputs>
struct Inputs
{
};
template <template <typename _Type, typename _State> class, typename... _Inputs>
struct Inputs<Input<_Type, _State>, _Inputs...> : public Inputs<_Inputs...>
{
};
どこか:私は打ち鳴らす-5.0を使用し、-std = Cを取得
auto temp = Inputs<Input<float, IsFree>, Input<float, IsFree>> {};
++ 17:
13 : <source>:13:21: error: use of undeclared identifier '_Type'
struct Inputs<Input<_Type, _State>, _Inputs...> : public Inputs<_Inputs...>
^
13 : <source>:13:35: error: expected a type
struct Inputs<Input<_Type, _State>, _Inputs...> : public Inputs<_Inputs...>
^
2 errors generated.
Compiler exited with result code 1
アンダースコアで始まり大文字で始まる識別子は予約されています。これは宣言するための未定義の動作です。 ['[lex.name]/3.1']のルール(http://eel.is/c++draft/lex.name#3.1)。 – YSC
** SFINAE **、SNIFAEではありません。置換の失敗はエラーではありません。 – Constructor