c++ - 这个 static_assert 会被触发吗?

标签 c++ c++11 static-assert

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* 永远不会被触发 - 即使有人也尝试过。
那么这个问题的答案是什么?

最佳答案

struct dummy {
    operator int() const
    { return 0; }
};

// Where rhs has appropriate type
dummy() + rhs;

关于c++ - 这个 static_assert 会被触发吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7792339/

相关文章:

c++ - 从googletest中的派生夹具派生夹具

c++ - 如何将 vector<unsigned char> 写入文件,后跟一个 unsigned int

string - to_string 与强制转换为字符串和运算符<<

c++ - 在 C++ 中实现正则表达式

c++ - 安全删除 C++ 隐藏的虚拟警告

c++ - 使用较旧的 C++ 实现在编译时检查一些编译时定义

c++ - 使用 OpenCV 在 MATLAB 和 C++ 中使用不同的像素值

c++ - 如何使用 C++ 从 OpenCV 中的框架中删除黑色边框?

c++ - 如何访问Boost Graph中的边信息?

C++ 实现我自己的 static_assert