Yes. Yes, it is.
Static initializers may call functions, as long as they're in scope.
[dcl.decl]
(2003 wording, 8/2):
Initial values can also be specified
in a declarator; initializers are
discussed in 8.5 and 12.6.
[dcl.init]
(2003 wording, 8.5/2):
Automatic, register, static, and
external variables of namespace scope
can be initialized by arbitrary
expressions involving literals and
previously declared variables and
functions.
(Don't be misled by the lack of the static
keyword, which has all sorts of meanings. Your variable myvar
is declared at namespace scope, and thus has static storage duration.)
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…