template<class Int_T,class Integral,typename Best_Fit<Int_T>::type Min_Range,
typename Best_Fit<Int_T>::type Max_Range>
auto operator+(Integral left,const Int<Int_T,Min_Range,Max_Range>& right)
->Int<decltype(left + right.get_data())>
{
static_assert(std::is_integral<Integral>::value,"Non integral type is not allowed.");
static_assert(std::is_integral<Int_T>::value,"Non integral type is not allowed.");
auto data = left + right.get_data();
Int<decltype(left + right.get_data())> result(data);
return result;
}
問題是,我不認爲這兩個static_assert * *會被觸發 - 即使有人也嘗試。
那麼這個Q的答案是什麼?這個static_assert會被觸發嗎?
什麼是'Int'? –
我不明白爲什麼不這樣做,你*可以*提出一個滿足約束的類('Best_Fit'和'Int' - 無論它們是什麼),但是失敗is_integral ... – Nim
我認爲這是不可能的回答沒有'Int <>','Best_Fit <>'的定義,因爲其中任何一個都可能觸發SFINAE – sehe