// // MessagePack for C++ C+03/C+11 Adaptation // // Copyright (C) 2013 KONDO Takatoshi // // Licensed under the Apache License, Version 2.0 (the “License”); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an “AS IS” BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ifndef MSGPACK_CPP_CONFIG_HPP define MSGPACK_CPP_CONFIG_HPP

include “msgpack/versioning.hpp”

if !defined(MSGPACK_USE_CPP03)

// If MSVC would support C++11 completely,
// then 'defined(_MSC_VER)' would replace with
// '_MSC_VER < XXXX'

# if (__cplusplus < 201103) || defined(_MSC_VER) # define MSGPACK_USE_CPP03 # endif endif // MSGPACK_USE_CPP03

if defined __cplusplus if __cplusplus < 201103

if !defined(nullptr) # if _MSC_VER < 1600 # define nullptr (0) # endif endif

include <memory>

namespace msgpack {

/// @cond MSGPACK_API_VERSION_NAMESPACE(v1) { /// @endcond

template <typename T> struct unique_ptr : std::auto_ptr<T> {

explicit unique_ptr(T* p = 0) throw() : std::auto_ptr<T>(p) {}
unique_ptr(unique_ptr& a) throw() : std::auto_ptr<T>(a) {}
template<class Y>
unique_ptr (unique_ptr<Y>& a) throw() : std::auto_ptr<T>(a) {}

};

template <typename T> T& move(T& t) {

return t;

}

template <typename T> T const& move(T const& t) {

return t;

}

template <bool P, typename T = void> struct enable_if {

typedef T type;

};

template <typename T> struct enable_if<false, T> { };

/// @cond } // MSGPACK_API_VERSION_NAMESPACE(v1) /// @endcond

} // namespace msgpack

else // __cplusplus < 201103

include <memory> include <tuple>

namespace msgpack { /// @cond MSGPACK_API_VERSION_NAMESPACE(v1) { /// @endcond

// unique_ptr
using std::unique_ptr;
// using std::make_unique; // since C++14
using std::hash;

// utility
using std::move;
using std::swap;
using std::enable_if;

/// @cond } // MSGPACK_API_VERSION_NAMESPACE(v1) /// @endcond } // namespace msgpack

endif // __cplusplus < 201103

endif // __cplusplus

endif msgpack/cpp_config.hpp