c++: if constexpr

This commit is contained in:
Ciro Santilli 六四事件 法轮功
2019-09-07 00:00:00 +00:00
parent 4806f0ecfb
commit cb3f2f6183
2 changed files with 27 additions and 1 deletions

View File

@@ -12983,7 +12983,10 @@ Programs under link:userland/cpp/[] are examples of https://en.wikipedia.org/wik
* link:userland/cpp/empty.cpp[] * link:userland/cpp/empty.cpp[]
* link:userland/cpp/hello.cpp[] * link:userland/cpp/hello.cpp[]
* templates * templates
** link:userland/cpp/template.cpp[] ** link:userland/cpp/template.cpp[]: basic example
** link:userland/cpp/if_constexpr.cpp[]: C++17 `if constexpr`
*** https://stackoverflow.com/questions/12160765/if-else-at-compile-time-in-c/54647315#54647315
*** https://stackoverflow.com/questions/37617677/implementing-a-compile-time-static-if-logic-for-different-string-types-in-a-co
[[cpp-multithreading]] [[cpp-multithreading]]
==== C++ multithreading ==== C++ multithreading

View File

@@ -0,0 +1,23 @@
// https://cirosantilli.com/linux-kernel-module-cheat#cpp
#if __cplusplus >= 201703L
#include <cassert>
#include <type_traits>
template <class T>
struct MyClass {
int myFunc() {
if constexpr(std::is_integral<T>())
return 1;
else
return 2;
}
};
#endif
int main() {
#if __cplusplus >= 201703L
assert(MyClass<int>().myFunc() == 1);
assert(MyClass<float>().myFunc() == 2);
#endif
}