@@ -73,31 +73,20 @@ namespace xcpp
73
73
xeus::register_interpreter (this );
74
74
}
75
75
76
- static std::string get_stdopt ()
76
+ static std::string get_stdopt (int argc, const char * const * argv )
77
77
{
78
- // We need to find what's the C++ version the interpreter runs with.
79
- const char * code = R"(
80
- int __get_cxx_version () {
81
- #if __cplusplus > 202302L
82
- return 26;
83
- #elif __cplusplus > 202002L
84
- return 23;
85
- #elif __cplusplus > 201703L
86
- return 20;
87
- #elif __cplusplus > 201402L
88
- return 17;
89
- #elif __cplusplus > 201103L || (defined(_WIN32) && _MSC_VER >= 1900)
90
- return 14;
91
- #elif __cplusplus >= 201103L
92
- return 11;
93
- #else
94
- return 0;
95
- #endif
96
- }
97
- __get_cxx_version ()
98
- )" ;
99
- auto cxx_version = Cpp::Evaluate (code);
100
- return std::to_string (cxx_version);
78
+ std::string res = " 14" ;
79
+ for (int i = 0 ; i < argc; ++i)
80
+ {
81
+ std::string arg (argv[i]);
82
+ auto pos = arg.find (" -std=c++" );
83
+ if (pos != std::string::npos)
84
+ {
85
+ res = arg.substr (pos + 8 );
86
+ break ;
87
+ }
88
+ }
89
+ return res;
101
90
}
102
91
103
92
interpreter::interpreter (int argc, const char * const * argv) :
@@ -109,7 +98,7 @@ __get_cxx_version ()
109
98
{
110
99
// NOLINTNEXTLINE (cppcoreguidelines-pro-bounds-pointer-arithmetic)
111
100
createInterpreter (Args (argv ? argv + 1 : argv, argv + argc));
112
- m_version = get_stdopt ();
101
+ m_version = get_stdopt (argc, argv );
113
102
redirect_output ();
114
103
init_preamble ();
115
104
init_magic ();
0 commit comments