in src/cpptools.ts [66:83]
function parseCppStandard(std: string, can_use_gnu: boolean): StandardVersion {
const is_gnu = can_use_gnu && std.startsWith('gnu');
if (std.endsWith('++2a') || std.endsWith('++2b') || std.endsWith('++20') || std.endsWith('++latest')) {
return is_gnu ? 'gnu++20' : 'c++20';
} else if (std.endsWith('++17') || std.endsWith('++1z')) {
return is_gnu ? 'gnu++17' : 'c++17';
} else if (std.endsWith('++14') || std.endsWith('++1y')) {
return is_gnu ? 'gnu++14' : 'c++14';
} else if (std.endsWith('++11') || std.endsWith('++0x')) {
return is_gnu ? 'gnu++11' : 'c++11';
} else if (std.endsWith('++03')) {
return is_gnu ? 'gnu++03' : 'c++03';
} else if (std.endsWith('++98')) {
return is_gnu ? 'gnu++98' : 'c++98';
} else {
return undefined;
}
}