T
クラステンプレートのタイプパラメータにPODタイプ制約を設定し、満足のいくものからA
別のクラステンプレートを派生させたいと思います。また、のインスタンスの恒常性に応じて実装が異なることになっています。これをすべて行う目的は、実行前の型チェックを改善することです。B
A
B
A
私が理解できるのは、A
template <typename T, typename POD=void>
class A;
template <typename T>
class A <T, std::enable_if<std::is_pod<T>::value>::type>
{
//blah...
};
部分的なパラメータ化がタイプスイッチのようなトリックを行うことに気付いたかもしれないので、非PODタイプを渡すときにAをインスタンス化できないようにします。
しかし、Bをどのように定義できるかわかりません。次のように見えると思います
template <typename A?>
class B;
template <>
B<const A?> : public A?
{
//blah...
};
template <>
B<A?> : public A?
{
//blah...
};
素晴らしいアイデアはありますか?
PS:個人的に私は非常に批判的である傾向があります。しかし、とにかくこれができると思う方法を投稿してください。