1b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 2b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 3b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// The LLVM Compiler Infrastructure 4b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 5b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// This file is dual licensed under the MIT and the University of Illinois Open 6b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// Source Licenses. See LICENSE.TXT for details. 7b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 8b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner//===----------------------------------------------------------------------===// 9b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 10b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// <queue> 11b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 12b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// template <class T, class Container = deque<T>> 13b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// class queue 14b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// { 15b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// public: 16b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// typedef Container container_type; 17b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// typedef typename container_type::value_type value_type; 18b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// typedef typename container_type::reference reference; 19b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// typedef typename container_type::const_reference const_reference; 20b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// typedef typename container_type::size_type size_type; 21b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// 22b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// protected: 23b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// container_type c; 24b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// ... 25b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner// }; 26b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 27b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <queue> 28b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner#include <type_traits> 29b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 30b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerstruct test 31b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner : private std::queue<int> 32b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 33b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner test() 34b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner { 35b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner c.push_back(1); 36b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner } 37b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner}; 38b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 39b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerstruct C 40b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 41b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef int value_type; 42b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef int& reference; 43b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef const int& const_reference; 44b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner typedef int size_type; 45b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner}; 46b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner 47b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turnerint main() 48b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner{ 49b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert((std::is_same<std::queue<int>::container_type, std::deque<int> >::value), ""); 50b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert((std::is_same<std::queue<double, std::vector<int> >::container_type, std::vector<int> >::value), ""); 51b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert((std::is_same<std::queue<double, std::vector<int> >::value_type, int>::value), ""); 52b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert((std::is_same<std::queue<int>::reference, std::deque<int>::reference>::value), ""); 53b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert((std::is_same<std::queue<int>::const_reference, std::deque<int>::const_reference>::value), ""); 54b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert((std::is_same<std::queue<int>::size_type, std::deque<int>::size_type>::value), ""); 55b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert((std::uses_allocator<std::queue<int>, std::allocator<int> >::value), ""); 56b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner static_assert((!std::uses_allocator<std::queue<int, C>, std::allocator<int> >::value), ""); 57b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner test t; 58b9a36c36f4b257de79bd656aefa7bfde40cedb0fDavid 'Digit' Turner} 59