/** * D header file for interaction with C++ std::type_traits. * * Copyright: Copyright Digital Mars 2018. * License: Distributed under the * $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0). * (See accompanying file LICENSE) * Authors: Manu Evans * Source: $(DRUNTIMESRC core/stdcpp/type_traits.d) */ module core.stdcpp.type_traits; extern(C++, "std"): /// struct integral_constant(T, T Val) { /// enum T value = Val; /// alias value_type = T; /// alias type = typeof(this); } /// alias bool_constant(bool b) = integral_constant!(bool, b); // Useful for dealing with enable_if constraints. /// alias true_type = bool_constant!true; /// alias false_type = bool_constant!false; /// struct is_empty(T) { static if (is(T == struct)) private enum __is_empty = T.tupleof.length == 0; else private enum __is_empty = false; /// enum bool value = __is_empty; /// alias value_type = bool; /// alias type = integral_constant!(bool, value); }