// (C) Copyright John Maddock 2022. // (C) Copyright James Folberth 2022. // Use, modification and distribution are subject to the // Boost Software License, Version 1.0. (See accompanying file // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) // Issue 754 // Check that the class template argument deduction guides properly promote // integral ctor args to a real floating point type. #include #include #include #include #include #include //#include #include #include #include #include #include //#include //#include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include // Instantiate a DistType object with the parameter pack given by Types. // Then verify that the `RealType` template parameter of DistType (stored in // in value_type) is promoted correctly according to the deduction guides. template class DistType, class PromType = double, class... Types> void test_deduction_guide(Types... types) { DistType d(types...); static_assert(std::is_same::value); } int main() { using namespace boost::math; test_deduction_guide(0); test_deduction_guide(0, 1); test_deduction_guide(0); test_deduction_guide(1); test_deduction_guide(1, 1); test_deduction_guide(1); test_deduction_guide(1, 0); test_deduction_guide(0); test_deduction_guide(0, 1); test_deduction_guide(2); test_deduction_guide(1); test_deduction_guide(0); test_deduction_guide(0, 1); test_deduction_guide(1, 2); test_deduction_guide(1); test_deduction_guide(1, 1); test_deduction_guide(1); test_deduction_guide(1); test_deduction_guide(1, 1); test_deduction_guide(1); test_deduction_guide(1, 1); test_deduction_guide(1); test_deduction_guide(1, 1); test_deduction_guide(1); test_deduction_guide(0); test_deduction_guide(0, 1); test_deduction_guide(0); test_deduction_guide(0, 1); test_deduction_guide(0); test_deduction_guide(0, 1); test_deduction_guide(1, 1); test_deduction_guide(1, 1, 1); test_deduction_guide(1, 1); test_deduction_guide(1, 1, 1); test_deduction_guide(1, 1); test_deduction_guide(2); test_deduction_guide(2, 3); test_deduction_guide(2); test_deduction_guide(2, 3); test_deduction_guide(1); test_deduction_guide(1); test_deduction_guide(0); test_deduction_guide(0, 1); test_deduction_guide(0, 1, 0); test_deduction_guide(2); test_deduction_guide(-1); test_deduction_guide(-1, 0); test_deduction_guide(-1, 0, 1); test_deduction_guide(0); test_deduction_guide(0, 1); test_deduction_guide(1); test_deduction_guide(1, 1); }