You can massage the string a bit:
\documentclass{article}
\usepackage{xparse,l3regex}
\ExplSyntaxOn
\NewDocumentCommand{\cppstring}{m}
{
\tl_set:Nn \l_spraff_cppstring_tl { #1 }
% change _ to a printable underscore
\regex_replace_all:nnN { _ } { \cO\_ } \l_spraff_cppstring_tl
% change :: to \linebreak[0]::
\regex_replace_all:nnN { :: } { \c{linebreak}[0]:: } \l_spraff_cppstring_tl
% print the result
\texttt{ \tl_use:N \l_spraff_cppstring_tl }
}
\tl_new:N \l_spraff_cppstring_tl
\ExplSyntaxOff
\begin{document}
\noindent % just for the example
unrecoverable error occurs during the transformation, then a
\cppstring{std::ostream::traits_type::eq}
\end{document}

This can be improved, for example, by doing \linebreak[0] only after the first ::. The simplest way is adding a further replacement
% remove the first \linebreak[0]
\regex_replace_once:nnN { \c{linebreak}\[0\] } {} \l_spraff_cppstring_tl
before printing the result.
Note that, differently from the strategy of making characters active, the command \cppstring can also go in the argument to other commands.
This has the advantage of also working with babel-french where colons are treated specially.
This does not do magic. The example with the text
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
\noindent % just for the example
unrecoverable error occurs during the transformation, then a
\cppstring{stdxxxxx::ostreamxxxxxx::traits_typexxxxx::eqxxxxxxx} lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
will not justify the paragraph, because the first opportunity at :: cannot be taken as it would create too wide spaces in the line.
In an emergency, when rewriting is impossible or unsuccessfull, you can use sloppypar:
lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
\begin{sloppypar}
\noindent % just for the example
unrecoverable error occurs during the transformation, then a
\cppstring{stdxxxxx::ostreamxxxxxx::traits_typexxxxx::eqxxxxxxx} lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum lorem ipsum
\end{sloppypar}

::ostreamxxxxxxwould stretch too much the spaces in the line. Unless you allow hyphenation or reformulate your text, you're doomed. It's a completely different problem. – egreg Mar 17 '17 at 18:08sloppyparenvironment, you get awful word spacing, but the break is taken at the first::. Leave these adjustments for the final revision stage. – egreg Mar 17 '17 at 18:12