boostの正確性とテスト

1402 ワード

BOOST_ASSERTはdebugモードで有効です.
#include <iostream>

#include <boost/assert.hpp>

using namespace std;

using namespace boost;





double fun(int x)

{

	BOOST_ASSERT(x!=0 && "divede by zero");

	return 1.0/x;

}

int main()

{

	fun(0);

	return 0;

}


診断の詳細については、次の手順に従います.
#include <iostream>

#include <boost/assert.hpp>

#include <boost/format.hpp>

using namespace std;

using namespace boost;

#define  BOOST_ENABLE_ASSERT_HANDLER

namespace boost

{

	void assertion_failed(char const * exptr,char const *function,char const * file,long line)

	{

		boost::format fmt("Assertion failed!
Expression: %s
Function :%s
File %s
Line:%ld

"); fmt % exptr % function % file%line; cout << fmt; } } double fun(int x) { BOOST_ASSERT(x!=0 && "divede by zero"); return 1.0/x; } int main() { fun(0); return 0; }

静的アサーション、エラーをコンパイル期間に移行
#include <iostream>

#include <boost/static_assert.hpp>

using namespace std;

using namespace boost;



template<typename T>

T my_min(T a,T b)

{

	BOOST_STATIC_ASSERT(sizeof(T) < sizeof(int));

	return a < b ? a:b;

}



int main()

{

	cout << my_min((short)1,(short)3);

	//cout << my_min(1L,3L);

	return 0;

}