2
0
mirror of https://github.com/boostorg/hana.git synced 2026-02-22 03:22:21 +00:00

StdTuple: Add note about redundant Applicative instance.

This commit is contained in:
Louis Dionne
2014-07-14 19:37:30 -04:00
parent b19c801958
commit 8a3efe60fe
2 changed files with 38 additions and 1 deletions

View File

@@ -73,7 +73,10 @@ namespace boost { namespace hana {
{ return helper(f, tuple, std::index_sequence_for<Xs...>{}); }
};
//! @todo Check `Applicative` laws.
//! @todo
//! Get rid of this redundant instance once
//! http://llvm.org/bugs/show_bug.cgi?id=19616
//! is fixed.
template <>
struct Applicative::instance<StdTuple> : Applicative::mcd {
template <typename X>

View File

@@ -0,0 +1,34 @@
/*
@copyright Louis Dionne 2014
Distributed under the Boost Software License, Version 1.0.
(See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt)
*/
#include <boost/hana/ext/std/tuple.hpp>
#include <boost/hana/detail/static_assert.hpp>
#include <tuple>
using namespace boost::hana;
int main() {
// Make sure we workaround the bug at:
// http://llvm.org/bugs/show_bug.cgi?id=19616
BOOST_HANA_STATIC_ASSERT(
lift<StdTuple>(std::make_tuple(1)) ==
std::make_tuple(std::make_tuple(1))
);
// The following shows the actual bug:
#if 0
static_assert(
std::tuple_cat(
std::make_tuple(std::make_tuple(1)),
std::make_tuple()
)
==
std::make_tuple(std::make_tuple(1))
, "");
#endif
}