It looks like it should be possible: I'm not sure whether I have the latest version of the omnicppcomplete script, but in my autoload/omni/cpp/complete.vim, there is a function called s:ExtendTagItemToPopupItem.  In this function, there is:
" Formating information for the preview window
if index(['f', 'p'], tagItem.kind[0])>=0
    let szItemWord .= '('
    if g:OmniCpp_ShowPrototypeInAbbr && has_key(tagItem, 'signature')
        let szAbbr .= tagItem.signature
    else
        let szAbbr .= '('
    endif
endif
After the line (#165 in my version) let szItemWord .= '(', add:
    if (has_key(tagItem, 'signature') == 0) || (tagItem['signature'] =~ '()')
        let szItemWord .= ')'
    endif
That should do the trick (although I don't use C++ much, so I haven't tested it extensively).  It basically checks whether the "signature" of the function contains "()" as opposed to (for example) "(int *major, int *minor)".  If the brackets are empty, it adds a closing brace.
It could probably be improved by changing '()' to '(\s*\(void\)\?\s*)' for completeness: this would check for "()", "( )", "(void)", "( void )" etc.