mirror of
https://github.com/boostorg/typeof.git
synced 2026-04-29 02:13:22 +02:00
Compare commits
3 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d5c39b3615 | |||
| 39361d0ac9 | |||
| 5fcc3c4cfd |
@@ -1,21 +0,0 @@
|
||||
#----------------------------------------------------------------------------
|
||||
# This file was automatically generated from the original CMakeLists.txt file
|
||||
# Add a variable to hold the headers for the library
|
||||
set (lib_headers
|
||||
typeof
|
||||
)
|
||||
|
||||
# Add a library target to the build system
|
||||
boost_library_project(
|
||||
typeof
|
||||
# SRCDIRS
|
||||
TESTDIRS test
|
||||
HEADERS ${lib_headers}
|
||||
# DOCDIRS
|
||||
# DESCRIPTION
|
||||
MODULARIZED
|
||||
# AUTHORS
|
||||
# MAINTAINERS
|
||||
)
|
||||
|
||||
|
||||
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
+3
-12
@@ -104,7 +104,7 @@ namespace boost
|
||||
typedef T type;
|
||||
};
|
||||
};
|
||||
#elif BOOST_WORKAROUND(BOOST_MSVC,>=1400)
|
||||
#elif BOOST_WORKAROUND(BOOST_MSVC,==1400)
|
||||
struct msvc_extract_type_default_param {};
|
||||
|
||||
template<typename ID, typename T = msvc_extract_type_default_param>
|
||||
@@ -153,7 +153,7 @@ namespace boost
|
||||
};
|
||||
};
|
||||
# endif
|
||||
# if BOOST_WORKAROUND(BOOST_MSVC,==1310)
|
||||
# if BOOST_WORKAROUND(BOOST_MSVC,>=1310)
|
||||
template<const std::type_info& ref_type_info>
|
||||
struct msvc_typeid_wrapper {
|
||||
typedef typename msvc_extract_type<msvc_typeid_wrapper>::id2type id2type;
|
||||
@@ -184,7 +184,6 @@ namespace boost
|
||||
template<typename Organizer, typename T>
|
||||
msvc_register_type<T,Organizer> typeof_register_type(const T&);
|
||||
|
||||
|
||||
# define BOOST_TYPEOF(expr) \
|
||||
boost::type_of::msvc_typeid_wrapper<typeid(boost::type_of::encode_start(expr))>::type
|
||||
|
||||
@@ -240,18 +239,10 @@ struct name {\
|
||||
{
|
||||
typedef char(*type)[encode_type<T>::value];
|
||||
};
|
||||
# if BOOST_WORKAROUND(BOOST_MSVC,>=1310)
|
||||
template<typename T> typename disable_if<
|
||||
typename is_function<T>::type,
|
||||
typename sizer<T>::type>::type encode_start(T const&);
|
||||
|
||||
template<typename T> typename enable_if<
|
||||
typename is_function<T>::type,
|
||||
typename sizer<T>::type>::type encode_start(T&);
|
||||
# else
|
||||
template<typename T>
|
||||
typename sizer<T>::type encode_start(T const&);
|
||||
# endif
|
||||
|
||||
template<typename Organizer, typename T>
|
||||
msvc_register_type<T,Organizer> typeof_register_type(const T&,Organizer* =0);
|
||||
|
||||
|
||||
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
+1
-4
@@ -138,12 +138,9 @@ namespace boost { namespace type_of {
|
||||
|
||||
namespace boost { namespace type_of {
|
||||
|
||||
# if BOOST_TYPEOF_LIMIT_SIZE < 50
|
||||
template<class V, class T> struct push_back {
|
||||
typedef V type;
|
||||
};
|
||||
# endif
|
||||
//default behaviour is to let push_back ignore T, and return the input vector.
|
||||
}; //default behaviour is to let push_back ignore T, and return the input vector.
|
||||
//This is to let BOOST_TYPEOF_NESTED_TYPEDEF work properly with the default vector.
|
||||
# define BOOST_PP_LOCAL_MACRO BOOST_TYPEOF_spec_push_back
|
||||
# define BOOST_PP_LOCAL_LIMITS \
|
||||
|
||||
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
+1
-1
@@ -10,7 +10,7 @@ License, Version 1.0. (http://www.boost.org/LICENSE_1_0.txt)
|
||||
</head>
|
||||
<body>
|
||||
Automatic redirection failed, please go to
|
||||
<a href="../../doc/html/typeof.html">../../doc/html/typeof.html</a>
|
||||
<a href="../../doc/html/xpressive.html">../../doc/html/typeof.html</a>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
boost_module(typeof DEPENDS mpl config detail preprocessor)
|
||||
@@ -1,24 +0,0 @@
|
||||
boost_additional_test_dependencies(typeof BOOST_DEPENDS test)
|
||||
|
||||
|
||||
file(GLOB TEST_FILES "*.cpp")
|
||||
foreach(TEST_FILE ${TEST_FILES})
|
||||
if (TEST_FILE MATCHES "odr.*cpp")
|
||||
# Skip ODR tests; we'll handle them separately
|
||||
else (TEST_FILE MATCHES "odr.*cpp")
|
||||
get_filename_component(TEST_NAME ${TEST_FILE} NAME_WE)
|
||||
boost_test_compile("${TEST_NAME}_native"
|
||||
"${TEST_NAME}.cpp" COMPILE_FLAGS "-DBOOST_TYPEOF_NATIVE")
|
||||
boost_test_compile("${TEST_NAME}_emulation"
|
||||
"${TEST_NAME}.cpp" COMPILE_FLAGS "-DBOOST_TYPEOF_EMULATION")
|
||||
endif (TEST_FILE MATCHES "odr.*cpp")
|
||||
endforeach(TEST_FILE ${TEST_FILES})
|
||||
|
||||
boost_test_run(odr_native
|
||||
odr1.cpp odr2.cpp COMPILE_FLAGS "-DBOOST_TYPEOF_NATIVE")
|
||||
boost_test_run(odr_emulation
|
||||
odr1.cpp odr2.cpp COMPILE_FLAGS "-DBOOST_TYPEOF_EMULATION")
|
||||
boost_test_run(odr_no_uns
|
||||
odr_no_uns1.cpp odr_no_uns2.cpp
|
||||
COMPILE_FLAGS "-DBOOST_TYPEOF_EMULATION")
|
||||
|
||||
Regular → Executable
Executable
+26
@@ -0,0 +1,26 @@
|
||||
|
||||
template<typename ID>
|
||||
struct msvc_extract_type
|
||||
{
|
||||
template<bool>
|
||||
struct id2type_impl;
|
||||
|
||||
typedef id2type_impl<true> id2type;
|
||||
};
|
||||
|
||||
template<typename T, typename ID>
|
||||
struct msvc_register_type : msvc_extract_type<ID>
|
||||
{
|
||||
template<>
|
||||
struct id2type_impl<true> //VC7.0 specific bugfeature
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
};
|
||||
|
||||
int main() {
|
||||
sizeof(msvc_register_type<double,int>);
|
||||
typedef msvc_extract_type<int>::id2type::type deduced_type;
|
||||
deduced_type f=5.0;
|
||||
return 0;
|
||||
}
|
||||
Executable
+39
@@ -0,0 +1,39 @@
|
||||
|
||||
struct msvc_extract_type_default_param {};
|
||||
|
||||
template<typename ID, typename T = msvc_extract_type_default_param>
|
||||
struct msvc_extract_type;
|
||||
|
||||
template<typename ID>
|
||||
struct msvc_extract_type<ID, msvc_extract_type_default_param> {
|
||||
template<bool>
|
||||
struct id2type_impl;
|
||||
|
||||
typedef id2type_impl<true> id2type;
|
||||
};
|
||||
|
||||
template<typename ID, typename T>
|
||||
struct msvc_extract_type : msvc_extract_type<ID,msvc_extract_type_default_param>
|
||||
{
|
||||
template<>
|
||||
struct id2type_impl<true> //VC8.0 specific bugfeature
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
template<bool>
|
||||
struct id2type_impl;
|
||||
|
||||
typedef id2type_impl<true> id2type;
|
||||
};
|
||||
|
||||
template<typename T, typename ID>
|
||||
struct msvc_register_type : msvc_extract_type<ID, T>
|
||||
{
|
||||
};
|
||||
|
||||
int main() {
|
||||
sizeof(msvc_register_type<double,int>);
|
||||
typedef msvc_extract_type<int>::id2type::type deduced_type;
|
||||
deduced_type f=5.0;
|
||||
return 0;
|
||||
}
|
||||
Executable
+23
@@ -0,0 +1,23 @@
|
||||
|
||||
template<typename ID>
|
||||
struct msvc_extract_type
|
||||
{
|
||||
struct id2type;
|
||||
};
|
||||
|
||||
template<typename T, typename ID>
|
||||
struct msvc_register_type : msvc_extract_type<ID>
|
||||
{
|
||||
typedef msvc_extract_type<ID> base_type;
|
||||
struct base_type::id2type // This uses nice VC6.5 and VC7.1 bugfeature
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
};
|
||||
|
||||
int main() {
|
||||
sizeof(msvc_register_type<double,int>);
|
||||
typedef msvc_extract_type<int>::id2type::type deduced_type;
|
||||
deduced_type f=5.0;
|
||||
return 0;
|
||||
}
|
||||
Executable
+9
@@ -0,0 +1,9 @@
|
||||
#include <typeinfo>
|
||||
|
||||
template<const std::type_info& info>
|
||||
struct msvc_register_type {
|
||||
};
|
||||
|
||||
int main() {
|
||||
msvc_register_type<typeid(double)>;
|
||||
}
|
||||
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Regular → Executable
Reference in New Issue
Block a user