Будет ли этот static_assert когда-либо запущен? - PullRequest
2 голосов
/ 17 октября 2011
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 * s * когда-нибудь сработают - даже если кто-то попытается тоже.
Так каков ответ на этот вопрос?

Ответы [ 2 ]

1 голос
/ 17 октября 2011
struct dummy {
    operator int() const
    { return 0; }
};

// Where rhs has appropriate type
dummy() + rhs;
0 голосов
/ 17 октября 2011
std::string x;
Int<int, 3, 5> i;

auto z = x + i;

Сработало.

...