Design by Contract (DbC)
- こんなものが提案されていた(必見)・・・Proposal to add Contract Programming to C++
- function-try-blockでなんとかする試み・・・ソースコード
- 標準準拠のはず、だが、これは今までで一番怪しい
- 結局コンストラクタでお手上げになってしまった
- postconditionをBoost.Lambdaでなんとかする試みを発見・・・Design by Contract in C++
- function-try-blockでなんとかする試み・・・ソースコード
- D言語のDbC・・・参照
[]inline[]
[]float[] []square_root[][]([][]float[] []x[][])[]
[]PSTADE_PRECONDITION[][] ([]
[]assert[][]([][]x[][] >= [][]0[][]);[]
[] )[]
[]{[]
[]float[] []result[][] = [][]std[][]::[][]sqrt[][]([][]x[][]);[][]PSTADE_BLOCK_INVARIANT[][] ([]
[]assert[][](([][]result[][] * [][]result[][]) == [][]x[][]);[]
[] )[][]return[] []result[][];[]
[]}[]
[]struct[] []date[]
[]{[]
[]date[][]([][]int[] []day[][], [][]int[] []hour[][]) :[]
[]m_day[][]([][]day[][]), [][]m_hour[][]([][]hour[][])[]
[] {[]
[] }[][]void[] []set_day[][]([][]int[] []day[][])[]
[]PSTADE_PUBLIC_PRECONDITION[][] ([]
[]assert[][]([][]1[][] <= [][]day[][] && [][]day[][] <= [][]31[][]);[]
[] )[]
[] {[]
[]m_day[][] = [][]day[][];[]
[] }[][]private[][]:[]
[]PSTADE_INVARIANT[]
[] {[]
[]assert[][]([][]1[][] <= [][]m_day[][] && [][]m_day[][] <= [][]31[][]);[]
[]assert[][]([][]0[][] <= [][]m_hour[][] && [][]m_hour[][] < [][]24[][]);[]
[] }[][]int[] []m_day[][], [][]m_hour[][];[]
[]};[]