difference_type.pass.cpp revision c52f43e72dfcea03037729649da84c23b3beb04a
15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)//===----------------------------------------------------------------------===// 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The LLVM Compiler Infrastructure 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// 55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// This file is distributed under the University of Illinois Open Source 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// License. See LICENSE.TXT for details. 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)// 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===// 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// <memory> 11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) 12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// template <class Ptr> 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// struct pointer_traits 145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// { 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// typedef <details> difference_type; 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// ... 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// }; 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <memory> 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <type_traits> 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct A 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef short element_type; 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef char difference_type; 26a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles)}; 27a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct B 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef short element_type; 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class T> 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct C {}; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)template <class T> 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct D 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) typedef char difference_type; 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int main() 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles){ 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_assert((std::is_same<std::pointer_traits<A>::difference_type, char>::value), ""); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) static_assert((std::is_same<std::pointer_traits<B>::difference_type, std::ptrdiff_t>::value), ""); 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static_assert((std::is_same<std::pointer_traits<C<double> >::difference_type, std::ptrdiff_t>::value), ""); 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) static_assert((std::is_same<std::pointer_traits<D<int> >::difference_type, char>::value), ""); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 491e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)