#ifdef NDEBUG
  /*pass*/
#else
class dbg_complex {
  std::complex<double> m_complex;
public:
  // std::complex<double> のメソッドのうち使うやつ同じシグネチャのメソッドを書き並べ、m_complexに移譲
  ...
private:
  dbg_complex(doble);  // 禁止
};
#define complex dbg_compled
#endif
※ 個人の感想です。