diff --git a/gemma/benchmark_helper.cc b/gemma/benchmark_helper.cc index d83ab23..1a9573e 100644 --- a/gemma/benchmark_helper.cc +++ b/gemma/benchmark_helper.cc @@ -86,15 +86,21 @@ GemmaEnv::GemmaEnv(const LoaderArgs& loader, const InferenceArgs& inference, }; } -// Note: the delegating ctor above is called before any other initializers here. -GemmaEnv::GemmaEnv(int argc, char** argv) - : GemmaEnv(LoaderArgs(argc, argv), InferenceArgs(argc, argv), - AppArgs(argc, argv)) { +// Internal init must run before the GemmaEnv ctor above, hence it cannot occur +// in the argv ctor below because its body runs *after* the delegating ctor. +// This helper function takes care of the init, and could be applied to any of +// the *Args classes, it does not matter which. +static AppArgs MakeAppArgs(int argc, char** argv) { { // So that indentation matches expectations. // Placeholder for internal init, do not modify. } + return AppArgs(argc, argv); } +GemmaEnv::GemmaEnv(int argc, char** argv) + : GemmaEnv(LoaderArgs(argc, argv), InferenceArgs(argc, argv), + MakeAppArgs(argc, argv)) {} + std::pair GemmaEnv::QueryModel( const std::vector& tokens) { std::string res;