当前位置:  开发笔记 > 编程语言 > 正文

C++元编程 - 在代码中生成错误

如何解决《C++元编程-在代码中生成错误》经验,为你挑选了1个好方法。

有没有办法可以创建一个带int模板参数的函数,如果传递给函数的值小于10,那么该函数会产生编译时错误?

以下代码不起作用,但它显示了我想要完成的任务:

template 
void reportErrorIfLessThan10()
{
    #if(number1 < 10)
        #error the number is less than 10
    #endif
}


int maint(int argc, char**argv)
{
   reportErrorIfLessThan10<5>();//report an error!
   reportErrorIfLessThan10<12>();//ok
   return 0;
}

Joe.. 7

如果你不想让Boost C++ Libraries变得神奇并且想要骨干......

template class static_check
{
};

template<> class static_check
{
private: static_check();
};

#define StaticAssert(test) static_check<(test) != 0>()

然后使用StaticAssert.这对我来说是一个#define,因为我的代码需要在很多C++不适合模板的环境中运行,我需要将它备份到运行时断言.:(

此外,不是最好的错误消息.



1> Joe..:

如果你不想让Boost C++ Libraries变得神奇并且想要骨干......

template class static_check
{
};

template<> class static_check
{
private: static_check();
};

#define StaticAssert(test) static_check<(test) != 0>()

然后使用StaticAssert.这对我来说是一个#define,因为我的代码需要在很多C++不适合模板的环境中运行,我需要将它备份到运行时断言.:(

此外,不是最好的错误消息.

推荐阅读
周扒pi
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有