-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathis_final_std.cpp
More file actions
30 lines (24 loc) · 885 Bytes
/
is_final_std.cpp
File metadata and controls
30 lines (24 loc) · 885 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
// $HOME/bin_git/bin/g++ -std=c++14 -o is_final_std is_final_std.cpp
#include<type_traits>
#include<iostream>
class C1 {};
class C2 : C1 {};
class Cn final : C2 {};
int
main()
{
#ifdef __cpp_lib_is_final
#if __cpp_lib_is_final == 201402L
std::cout << "std::is_final<C1>::value = " << std::is_final<C1>::value << '\n';
std::cout << "std::is_final<C2>::value = " << std::is_final<C2>::value << '\n';
std::cout << "std::is_final<Cn>::value = " << std::is_final<Cn>::value << '\n';
std::cout << "std::is_final<Cn>::value = " << std::is_final<const Cn>::value << '\n';
std::cout << "std::is_final<Cn>::value = " << std::is_final<volatile Cn>::value << '\n';
std::cout << "std::is_final<Cn>::value = " << std::is_final<const volatile Cn>::value << '\n';
#else
#error "__cpp_lib_is_final == " __cpp_lib_is_final
#endif
#else
#error "__cpp_lib_is_final not defined"
#endif
}