Я использую boost 1.45.0 и имею некоторый код, который выполняет следующее:
template <typename T = some_type, std::size_t N = 3> class my_class {
public:
typedef T value_type;
...
...
my_class(value_type i0) {BOOST_STATIC_ASSERT(N==1); m_data[0]=i0;}
protected:
T m_data[N];
//!< The internal data array used to store indices
}
Это приводит к следующей ошибке в MS VC ++ 2010 (которая, как я понимаю, реализовала static_assert в качестве одного из их основных изменений) и никаких ошибок в MS VC ++ 2008:
error C2338: N==1
Аналогично, есть другие ошибки в некоторых других BOOST_STATIC_ASSERT в том же коде (опущены для краткости).
Я также попытался заменить static_assert из VC ++, но получил похожую ошибку сборки (выводит строку сообщения).
Какой обходной путь существует для этого?