15a83710eSEric Fiselier //===----------------------------------------------------------------------===// 25a83710eSEric Fiselier // 357b08b09SChandler Carruth // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 457b08b09SChandler Carruth // See https://llvm.org/LICENSE.txt for license information. 557b08b09SChandler Carruth // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 65a83710eSEric Fiselier // 75a83710eSEric Fiselier //===----------------------------------------------------------------------===// 85a83710eSEric Fiselier 95a83710eSEric Fiselier // <random> 105a83710eSEric Fiselier 115a83710eSEric Fiselier // template<class Engine, size_t k> 125a83710eSEric Fiselier // class shuffle_order_engine 135a83710eSEric Fiselier // { 145a83710eSEric Fiselier // public: 155a83710eSEric Fiselier // // types 165a83710eSEric Fiselier // typedef typename Engine::result_type result_type; 175a83710eSEric Fiselier // 185a83710eSEric Fiselier // // engine characteristics 195a83710eSEric Fiselier // static constexpr size_t table_size = k; 205a83710eSEric Fiselier // static constexpr result_type min() { return Engine::min; } 215a83710eSEric Fiselier // static constexpr result_type max() { return Engine::max; } 225a83710eSEric Fiselier 235a83710eSEric Fiselier #include <random> 245a83710eSEric Fiselier #include <type_traits> 255a83710eSEric Fiselier #include <cassert> 265a83710eSEric Fiselier 2769154d6eSEric Fiselier #include "test_macros.h" 2869154d6eSEric Fiselier 29aae63566SStephan T. Lavavej template <class T> where(const T &)30aae63566SStephan T. Lavavejvoid where(const T &) {} 315a83710eSEric Fiselier 325a83710eSEric Fiselier void test1()335a83710eSEric Fiseliertest1() 345a83710eSEric Fiselier { 355a83710eSEric Fiselier typedef std::knuth_b E; 365a83710eSEric Fiselier static_assert(E::table_size == 256, ""); 37ae3c4eecSStephan T. Lavavej #if TEST_STD_VER >= 11 38ae3c4eecSStephan T. Lavavej static_assert((E::min() == 1), ""); 39ae3c4eecSStephan T. Lavavej static_assert((E::max() == 2147483646), ""); 40ae3c4eecSStephan T. Lavavej #else 41ae3c4eecSStephan T. Lavavej assert((E::min() == 1)); 42ae3c4eecSStephan T. Lavavej assert((E::max() == 2147483646)); 43ae3c4eecSStephan T. Lavavej #endif 445a83710eSEric Fiselier where(E::table_size); 455a83710eSEric Fiselier } 465a83710eSEric Fiselier main(int,char **)47*2df59c50SJF Bastienint main(int, char**) 485a83710eSEric Fiselier { 495a83710eSEric Fiselier test1(); 50*2df59c50SJF Bastien 51*2df59c50SJF Bastien return 0; 525a83710eSEric Fiselier } 53