私はテンプレートのメタプログラミングにかなり慣れていないので、いくつかの概念に取り組んできました。
template<class TAG, typename... DATATYPES>
struct Message {
Message (typename std::enable_if<sizeof...(DATATYPES) >= 1>) {
}
... (various other constructor declarations here)
std::tuple<DATATYPES...> m_data;
};
それを読んだとき、1 つ以上の DATATYPES 引数があればデフォルトのコンストラクターが有効になると思っていましたが、それをテストした結果、コンパイル エラーが発生しました。
enable_if が何をすべきかを理解しているので、このスニペットを理解するのに役立つ助けをいただければ幸いです。
編集:これは、「この特定の効果を得るにはどうすればよいか」という問題ではないと思います。さらに、「このコードは実際に何を生成しているのか、元の作成者の意図であると私が理解したものと一致していますか?」という行に沿ってさらに詳しく説明します。