以下代码适用于 Visual Studio 2005,但在使用 g++ 4.4.5 编译时出现编译器错误:
#include <boost/mpl/if.hpp>
#include <boost/mpl/bool.hpp>
template<int X> struct A
{
void f() {
typedef boost::mpl::if_<boost::mpl::bool_<X == 1>, int, bool>::type Type;
}
};
这是我得到的错误:
main.cpp: In member function ‘void A<X>::f()’:
main.cpp:12: error: too few template-parameter-lists
代码有什么问题?如果我用硬编码数字替换模板化的 X,则代码编译得很好。我也尝试用 mpl::int_ 类型包装 X 但没有任何成功。
谢谢!