整数型を使用してクラスのコンストラクタを作成したいが、符号付きと符号なしを区別したい。私はこれをクラス自体のテンプレートにしたくありません。以下は機能しません。 Visual Studioは引数が一致しないと言うだけです。符号付き変数と符号なし変数の可変コンストラクタをenable_ifを使って作成する
class Thing{
public:
template<typename Integral>
Thing(
typename std::enable_if<
std::is_integral<Integral>::value &&
!std::is_same<Integral,bool>::value &&
std::is_signed<Integral>::value
,Integral
>::type num
){
//constructor using signed variable as input
}
template<typename Integral>
Thing(
typename std::enable_if<
std::is_integral<Integral>::value &&
!std::is_same<Integral,bool>::value &&
!std::is_signed<Integral>::value//notice this is different
,Integral
>::type num
){
//constructor using unsigned variable as input
}
};
これは機能しませんか?それは何ですか? :) – erip
'public'キーワードの欠如は、コードを上にしようとするうちに最初のエラーについて何か言います... – skypjack