私は、ジェネリック型 T に使用できるコピー コンストラクターがあるかどうかを判断する方法を作成するために、少し SFINAE を試みてきました。これが私が現在いる場所です。
template <bool statement, typename out>
struct Failable
{
typedef out Type;
};
//This class is only used to insert statements that
//could encounter substitution failure
template <typename O>
struct COPY
{
template <typename T>
typename Failable<true == sizeof(&T::T(const T&)), char>::Type copy(int)
{}
template <typename T>
typename Failable<true, int>::Type copy(...)
{}
};
しかし、これは私がちょっと立ち往生しているところでもあります。 &T::T(const T&)
たとえptm関数であっても、メンバーへのポインターを含む引数リストを提供できないため、明らかに無効なステートメントです。私はいつでも何らかのvoid (T::*ptmf)(const T&) = &T::T
.
他の誰かが私がトレッキングできるアイデアを持っていますか? (代入演算子のチェックにも同様の概念を適用する必要があります。)
ありがとうございます。