const_Types.pass.cpp revision b64f8b07c104c6cc986570ac8ee0ed16a9f23976
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//===----------------------------------------------------------------------===//
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//                     The LLVM Compiler Infrastructure
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// This file is dual licensed under the MIT and the University of Illinois Open
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Source Licenses. See LICENSE.TXT for details.
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//
82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)//===----------------------------------------------------------------------===//
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// <tuple>
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch// template <class... Types> class tuple;
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// explicit tuple(const T&...);
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <tuple>
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string>
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <cassert>
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)int main()
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles){
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        std::tuple<int> t(2);
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<0>(t) == 2);
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        std::tuple<int, char*> t(2, 0);
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<0>(t) == 2);
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(std::get<1>(t) == nullptr);
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        std::tuple<int, char*> t(2, nullptr);
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<0>(t) == 2);
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<1>(t) == nullptr);
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        std::tuple<int, char*, std::string> t(2, nullptr, "text");
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<0>(t) == 2);
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<1>(t) == nullptr);
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<2>(t) == "text");
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // extensions
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        std::tuple<int, char*, std::string> t(2);
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<0>(t) == 2);
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(std::get<1>(t) == nullptr);
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        assert(std::get<2>(t) == "");
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        std::tuple<int, char*, std::string> t(2, nullptr);
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<0>(t) == 2);
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<1>(t) == nullptr);
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<2>(t) == "");
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    }
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    {
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        std::tuple<int, char*, std::string, double> t(2, nullptr, "text");
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<0>(t) == 2);
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<1>(t) == nullptr);
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<2>(t) == "text");
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)        assert(std::get<3>(t) == 0.0);
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    }
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)