1 // Copyright Louis Dionne 2013-2017 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 4 5 #include <boost/hana/assert.hpp> 6 #include <boost/hana/fuse.hpp> 7 #include <boost/hana/tuple.hpp> 8 namespace hana = boost::hana; 9 10 __anon875ea35c0102(auto& ...vars) 11auto tie = [](auto& ...vars) { 12 return hana::fuse([&vars...](auto ...values) { 13 // Using an initializer list to sequence the assignments. 14 int dummy[] = {0, ((void)(vars = values), 0)...}; 15 (void)dummy; 16 }); 17 }; 18 main()19int main() { 20 int a = 0; 21 char b = '\0'; 22 double c = 0; 23 24 tie(a, b, c)(hana::make_tuple(1, '2', 3.3)); 25 BOOST_HANA_RUNTIME_CHECK(a == 1 && b == '2' && c == 3.3); 26 } 27