diff --git a/include/boost/fusion/container/list/cons_iterator.hpp b/include/boost/fusion/container/list/cons_iterator.hpp index 42c023c1..da694756 100644 --- a/include/boost/fusion/container/list/cons_iterator.hpp +++ b/include/boost/fusion/container/list/cons_iterator.hpp @@ -55,45 +55,45 @@ namespace boost { namespace fusion typedef cons_iterator_identity< add_const::type> identity; - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED nil_iterator() {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit nil_iterator(nil_ const&) {} }; template <> struct cons_iterator : nil_iterator { - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED cons_iterator() {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit cons_iterator(nil_ const&) {} }; template <> struct cons_iterator : nil_iterator { - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED cons_iterator() {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit cons_iterator(nil_ const&) {} }; template <> struct cons_iterator > : nil_iterator { - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED cons_iterator() {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit cons_iterator(nil_ const&) {} }; template <> struct cons_iterator const> : nil_iterator { - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED cons_iterator() {} - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED explicit cons_iterator(nil_ const&) {} }; }} diff --git a/include/boost/fusion/container/list/nil.hpp b/include/boost/fusion/container/list/nil.hpp index c94186da..ef909c97 100644 --- a/include/boost/fusion/container/list/nil.hpp +++ b/include/boost/fusion/container/list/nil.hpp @@ -31,11 +31,11 @@ namespace boost { namespace fusion typedef void_ car_type; typedef void_ cdr_type; - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED nil_() {} template - BOOST_FUSION_GPU_ENABLED + BOOST_CONSTEXPR BOOST_FUSION_GPU_ENABLED nil_(Iterator const& /*iter*/, mpl::true_ /*this_is_an_iterator*/) {} diff --git a/test/Jamfile b/test/Jamfile index ecd391c0..879b0f40 100644 --- a/test/Jamfile +++ b/test/Jamfile @@ -100,6 +100,7 @@ project [ run sequence/map_move.cpp : : : : ] [ run sequence/map_mutate.cpp : : : : ] [ run sequence/map_tie.cpp : : : : ] + [ run sequence/nil.cpp : : : : ] [ run sequence/nview.cpp : : : : ] [ run sequence/reverse_view.cpp : : : : ] [ run sequence/segmented_iterator_range.cpp : : : : ] diff --git a/test/sequence/nil.cpp b/test/sequence/nil.cpp new file mode 100644 index 00000000..bdc8c352 --- /dev/null +++ b/test/sequence/nil.cpp @@ -0,0 +1,25 @@ +/*============================================================================= + Copyright (c) 2014 Louis Dionne + + Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) +==============================================================================*/ +#include +#include +#include +#include +#include + + +int main() { + using namespace boost::fusion; + + // nil should be constexpr constructible + { + BOOST_CONSTEXPR nil x1 = nil(); + BOOST_CONSTEXPR nil x2 = nil(nil_iterator(), boost::mpl::true_()); + (void)x1; (void)x2; + } + + return boost::report_errors(); +}