Hi Kohei,
 Sorry it is without --std=c++11 that every thing is fine.
  The boost code manages to solve not having std::forward when compiled without the std=c++11 flag.

  With --std=c++11 I get the compiler errors about missing std::forward.

  I have tried all the boost macros that pertain to library features with no success. I did at the option BOOST_NO_CXX11_CONSTEXPR and this doesn't work either. The compiler is the full clang 3.4 and does support c++11 features such as constexpr. It is the library that is old. 

std::printf("GLIBCXX: %d\n",__GLIBCXX__);

produces

GLIBCXX: 20070514

Below is the full source with all the macros I have on:

Stan


#define BOOST_NO_CXX11_HDR_TYPE_TRAITS

#define BOOST_NO_CXX11_HDR_ATOMIC

#define BOOST_NO_CXX11_HDR_ARRAY

#define BOOST_NO_CXX11_HDR_CHRONO

#define BOOST_NO_CXX11_HDR_CODECVT

#define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE

#define BOOST_NO_CXX11_HDR_FORWARD_LIST

#define BOOST_NO_CXX11_HDR_FUNCTIONAL

#define BOOST_NO_CXX11_HDR_FUTURE

#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST

#define BOOST_NO_CXX11_HDR_MUTEX

#define BOOST_NO_CXX11_HDR_RANDOM

#define BOOST_NO_CXX11_HDR_RATIO

#define BOOST_NO_CXX11_HDR_SYSTEM_ERROR

#define BOOST_NO_CXX11_HDR_THREAD

#define BOOST_NO_CXX11_HDR_TUPLE

#define BOOST_NO_CXX11_HDR_TYPEINDEX

#define BOOST_NO_CXX11_HDR_TYPE_TRAITS

#define BOOST_NO_CXX11_HDR_UNORDERED_MAP

#define BOOST_NO_CXX11_NUMERIC_LIMITS

#define BOOST_NO_CXX11_SMART_PTR

#define BOOST_NO_CXX11_STD_UNORDERED

#define BOOST_NO_CXX11_ADDRESSOF

#define BOOST_NO_CXX11_ALLOCATOR

#define BOOST_NO_CXX11_ATOMIC_SMART_PTR

#undef BOOST_FUSION_HAS_VARIADIC_VECTOR

#include <boost/fusion/tuple.hpp>

#include <boost/fusion/algorithm.hpp>

#include <string>

#include <iostream>

#include <cstdio>

using namespace boost::fusion;

struct print

{

template <typename T>

void operator()(const T &t) const

{

std::cout << std::boolalpha << t << '\n';

}

};

int main()

{

#ifdef __GLIBCPP__

std::printf("GLIBCPP: %d\n",__GLIBCPP__);

#endif

#ifdef __GLIBCXX__

std::printf("GLIBCXX: %d\n",__GLIBCXX__);

#endif

typedef tuple<int, std::string, bool, double> tuple_type;

tuple_type t(10,"Boost", true, 3.14);

for_each(t, print());

}


On Thu, Dec 15, 2016 at 2:59 AM, Kohei Takahashi <flast@flast.jp> wrote:

Hi Stan,

Sorry for quite late reply.

On 2016/12/06 22:42, Stan Blakey wrote:
With the -std=c++11 it compiles and runs without any issue.
With -std=c++11 I get
Which line is correct?

boost_1_60_0\boost/fusion/container/vector/vector.hpp:126:20: error: no template named 'forward' in namespace 'std'; did you mean 'advance_detail::forward'?

return std::forward<result>(*advance_c<N>(begin(seq)));

and many similar errors.
Which standard library (and its version) are you using?

If your standard library provides `std::forward` and it functions normally, try `BOOST_NO_CXX11_CONSTEXPR`.

Kohei Takahashi


_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users