1 
2 template <long l>
3 struct Outputter;
4 
5 #if defined(__INTEL_COMPILER) && defined(_MSVC_LANG) && _MSVC_LANG < 201403L
6 #  if defined(__INTEL_CXX11_MODE__)
7 #    if defined(__cpp_aggregate_nsdmi)
8 #      define CXX_STD 201402L
9 #    else
10 #      define CXX_STD 201103L
11 #    endif
12 #  else
13 #    define CXX_STD 199711L
14 #  endif
15 #elif defined(_MSC_VER) && defined(_MSVC_LANG)
16 #  define CXX_STD _MSVC_LANG
17 #else
18 #  define CXX_STD __cplusplus
19 #endif
20 
21 #if DEFAULT_CXX23
22 #  if CXX_STD <= 202002L
23 Outputter<CXX_STD> o;
24 #  endif
25 #elif DEFAULT_CXX20
26 #  if CXX_STD <= 201703L
27 Outputter<CXX_STD> o;
28 #  endif
29 #elif DEFAULT_CXX17
30 #  if CXX_STD <= 201402L
31 Outputter<CXX_STD> o;
32 #  endif
33 #elif DEFAULT_CXX14
34 #  if CXX_STD != 201402L
35 Outputter<CXX_STD> o;
36 #  endif
37 #elif DEFAULT_CXX11
38 #  if CXX_STD != 201103L
39 Outputter<CXX_STD> o;
40 #  endif
41 #else
42 #  if !DEFAULT_CXX98
43 #    error Buildsystem error
44 #  endif
45 #  if CXX_STD != 199711L && CXX_STD != 1 &&                                   \
46     !defined(__GXX_EXPERIMENTAL_CXX0X__)
47 Outputter<CXX_STD> o;
48 #  endif
49 #endif
50 
main()51 int main()
52 {
53   return 0;
54 }
55