diff --git a/checks/test_case.cpp b/checks/test_case.cpp index 708160e1..7d21a8f3 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -421,7 +421,7 @@ namespace test = boost_no_cxx14_constexpr; # include "../test/boost_no_cxx14_decltype_auto.ipp" namespace test = boost_no_cxx14_decltype_auto; #endif -#ifdef TEST_BOOST_NO_CXX14_DIGIT_SEPARATOR +#ifdef TEST_BOOST_NO_CXX14_DIGIT_SEPARATORS # include "../test/boost_no_cxx14_digit_separator.ipp" namespace test = boost_no_cxx14_digit_separator; #endif diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 29ffe9db..69a16066 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -3545,7 +3545,7 @@

- BOOST_NO_CXX14_DIGIT_SEPARATOR + BOOST_NO_CXX14_DIGIT_SEPARATORS

@@ -3571,7 +3571,7 @@

- BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURE + BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES

diff --git a/doc/html/index.html b/doc/html/index.html index c184e488..a128e667 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -988,7 +988,7 @@ - +

Last revised: October 12, 2014 at 16:00:14 GMT

Last revised: October 21, 2014 at 11:37:59 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index 72b41cde..cd652ea3 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -892,9 +892,9 @@ Foo foo = { 0 }; [[`BOOST_NO_CXX14_BINARY_LITERALS`][The compiler does not binary literals (e.g. `0b1010`).]] [[`BOOST_NO_CXX14_CONSTEXPR`][The compiler does not support relaxed `constexpr`.]] [[`BOOST_NO_CXX14_DECLTYPE_AUTO`][The compiler does not support `decltype(auto)`.]] -[[`BOOST_NO_CXX14_DIGIT_SEPARATOR`][The compiler does not support digit separators (e.g. `1'000'000`).]] +[[`BOOST_NO_CXX14_DIGIT_SEPARATORS`][The compiler does not support digit separators (e.g. `1'000'000`).]] [[`BOOST_NO_CXX14_GENERIC_LAMBDAS`][The compiler does not support generic lambda (e.g. `[](auto v){ }`).]] -[[`BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURE`][The compiler does not support initialized lambda capture (e.g. `[foo = 42]{ }`).]] +[[`BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES`][The compiler does not support initialized lambda capture (e.g. `[foo = 42]{ }`).]] [[`BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION`][The compiler does not support return type deduction for normal functions (e.g. `auto f() { return val; }`).]] [[`BOOST_NO_CXX14_VARIABLE_TEMPLATES`][The compiler does not support variable template (e.g. `template T kibi = T(1024);`).]] ] diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp index c5764d09..80dd2300 100644 --- a/include/boost/config/compiler/borland.hpp +++ b/include/boost/config/compiler/borland.hpp @@ -211,7 +211,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp index 74073b41..95ddcbef 100644 --- a/include/boost/config/compiler/clang.hpp +++ b/include/boost/config/compiler/clang.hpp @@ -225,7 +225,22 @@ # define BOOST_NO_CXX14_GENERIC_LAMBDAS #endif -#if !(__has_feature(cxx_relaxed_constexpr) || __has_extension(cxx_relaxed_constexpr)) +// clang < 3.5 has a defect with dependent type, like following. +// +// template +// constexpr typename enable_if >::type foo(T &) +// { } // error: no return statement in constexpr function +// +// This issue also affects C++11 mode, but C++11 constexpr requires return stmt. +// Therefore we don't care such case. +// +// Note that we can't check Clang version directly as the numbering system changes depending who's +// creating the Clang release (see https://github.com/boostorg/config/pull/39#issuecomment-59927873) +// so instead verify that we have a feature that was introduced at the same time as working C++14 +// constexpr (generic lambda's in this case): +// +#if !__has_feature(cxx_generic_lambdas) \ + || !(__has_feature(cxx_relaxed_constexpr) || __has_extension(cxx_relaxed_constexpr)) # define BOOST_NO_CXX14_CONSTEXPR #endif @@ -237,8 +252,9 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif -#if ((__clang_major__ < 3) || (__clang_major__ == 3 && __clang_minor__ < 4)) || (__cplusplus < 201400) -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +#if __cplusplus < 201400 +// All versions with __cplusplus above this value seem to support this: +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp index b075003e..02bd792a 100644 --- a/include/boost/config/compiler/codegear.hpp +++ b/include/boost/config/compiler/codegear.hpp @@ -137,7 +137,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp index 35a5ad13..b92e574d 100644 --- a/include/boost/config/compiler/common_edg.hpp +++ b/include/boost/config/compiler/common_edg.hpp @@ -121,7 +121,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp index 6ccf697c..a3d293c7 100644 --- a/include/boost/config/compiler/digitalmars.hpp +++ b/include/boost/config/compiler/digitalmars.hpp @@ -97,7 +97,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp index c1cd4cb7..41705df0 100644 --- a/include/boost/config/compiler/gcc.hpp +++ b/include/boost/config/compiler/gcc.hpp @@ -241,7 +241,7 @@ #if (BOOST_GCC_VERSION < 40900) || (__cplusplus < 201300) # define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION # define BOOST_NO_CXX14_GENERIC_LAMBDAS -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS # define BOOST_NO_CXX14_DECLTYPE_AUTO # if !((BOOST_GCC_VERSION >= 40801) && (BOOST_GCC_VERSION < 40900) && defined(BOOST_GCC_CXX11)) # define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp index 85c9b3df..c11f29dd 100644 --- a/include/boost/config/compiler/gcc_xml.hpp +++ b/include/boost/config/compiler/gcc_xml.hpp @@ -75,7 +75,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp index 0fb5ec4d..c9301434 100644 --- a/include/boost/config/compiler/metrowerks.hpp +++ b/include/boost/config/compiler/metrowerks.hpp @@ -140,7 +140,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp index 64adf2d3..76045bcd 100644 --- a/include/boost/config/compiler/mpw.hpp +++ b/include/boost/config/compiler/mpw.hpp @@ -89,7 +89,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp index 740a8ccd..7c211c45 100644 --- a/include/boost/config/compiler/pathscale.hpp +++ b/include/boost/config/compiler/pathscale.hpp @@ -97,7 +97,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp index 2e24b3f7..e5605c9e 100644 --- a/include/boost/config/compiler/pgi.hpp +++ b/include/boost/config/compiler/pgi.hpp @@ -135,7 +135,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp index 856c68f3..e715165b 100644 --- a/include/boost/config/compiler/sunpro_cc.hpp +++ b/include/boost/config/compiler/sunpro_cc.hpp @@ -148,7 +148,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp index d0a8b4a0..6c228eab 100644 --- a/include/boost/config/compiler/vacpp.hpp +++ b/include/boost/config/compiler/vacpp.hpp @@ -146,7 +146,7 @@ # define BOOST_NO_CXX14_DECLTYPE_AUTO #endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index 023b2389..57b617d1 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -182,6 +182,9 @@ # define BOOST_NO_CXX11_USER_DEFINED_LITERALS # define BOOST_NO_CXX11_ALIGNAS # define BOOST_NO_CXX11_INLINE_NAMESPACES +# define BOOST_NO_CXX14_DECLTYPE_AUTO +# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES +# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION #endif // C++11 features not supported by any versions @@ -202,21 +205,12 @@ #if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304) # define BOOST_NO_CXX14_CONSTEXPR #endif -#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304) -# define BOOST_NO_CXX14_DECLTYPE_AUTO -#endif #if (__cplusplus < 201304) // There's no SD6 check for this.... -# define BOOST_NO_CXX14_DIGIT_SEPARATOR +# define BOOST_NO_CXX14_DIGIT_SEPARATORS #endif #if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304) # define BOOST_NO_CXX14_GENERIC_LAMBDAS #endif -#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304) -# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES -#endif -#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304) -# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION -#endif #if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304) # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif @@ -296,8 +290,8 @@ #endif // -// last known and checked version is 19.00.21901.1 (VC14 CTP3): -#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022013) +// last known and checked version is 19.00.22129 (VC14 CTP4): +#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022129) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # else diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp index a02aff78..6fa5f45b 100644 --- a/include/boost/config/platform/linux.hpp +++ b/include/boost/config/platform/linux.hpp @@ -72,7 +72,9 @@ // boilerplate code: #define BOOST_HAS_UNISTD_H #include +#ifdef __USE_GNU #define BOOST_HAS_PTHREAD_YIELD +#endif #ifndef __GNUC__ // diff --git a/test/boost_no_cxx11_hdr_type_traits.ipp b/test/boost_no_cxx11_hdr_type_traits.ipp index f33c5713..cf6cdd70 100644 --- a/test/boost_no_cxx11_hdr_type_traits.ipp +++ b/test/boost_no_cxx11_hdr_type_traits.ipp @@ -51,22 +51,23 @@ int test() using std::is_abstract; using std::is_constructible; using std::is_nothrow_constructible; - using std::has_default_constructor; - using std::has_copy_constructor; - using std::has_copy_assign; - using std::has_move_constructor; - using std::has_move_assign; - using std::has_trivial_default_constructor; - using std::has_trivial_copy_constructor; - using std::has_trivial_move_constructor; - using std::has_trivial_copy_assign; - using std::has_trivial_move_assign; - using std::has_trivial_destructor; - using std::has_nothrow_default_constructor; - using std::has_nothrow_copy_constructor; - using std::has_nothrow_move_constructor; - using std::has_nothrow_copy_assign; - using std::has_nothrow_move_assign; + using std::is_default_constructible; + using std::is_copy_constructible; + using std::is_copy_assignable; + using std::is_move_constructible; + using std::is_move_assignable; + using std::is_destructible; + using std::is_trivially_default_constructible; + using std::is_trivially_copy_constructible; + using std::is_trivially_move_constructible; + using std::is_trivially_copy_assignable; + using std::is_trivially_move_assignable; + using std::is_trivially_destructible; + using std::is_nothrow_default_constructible; + using std::is_nothrow_copy_constructible; + using std::is_nothrow_move_constructible; + using std::is_nothrow_copy_assignable; + using std::is_nothrow_move_assignable; using std::has_virtual_destructor; using std::is_signed; using std::is_unsigned; diff --git a/test/boost_no_cxx14_constexpr.ipp b/test/boost_no_cxx14_constexpr.ipp index 1e8918bf..5dd43dfa 100644 --- a/test/boost_no_cxx14_constexpr.ipp +++ b/test/boost_no_cxx14_constexpr.ipp @@ -14,7 +14,15 @@ namespace boost_no_cxx14_constexpr { -constexpr void decrement(int &value) +namespace detail +{ + template struct void_ { typedef void type; }; +} + +// Test relaxed constexpr with dependent type; for more details, see comment of +// BOOST_CXX14_CONSTEXPR definition in boost/config/compiler/clang.hpp . +template +constexpr typename detail::void_::type decrement(T &value) { --value; } diff --git a/test/boost_no_cxx14_digit_separator.ipp b/test/boost_no_cxx14_digit_separator.ipp index 510d2c33..3bdbbf43 100644 --- a/test/boost_no_cxx14_digit_separator.ipp +++ b/test/boost_no_cxx14_digit_separator.ipp @@ -7,7 +7,7 @@ // See http://www.boost.org/libs/config for more information. -// MACRO: BOOST_NO_CXX14_DIGIT_SEPARATOR +// MACRO: BOOST_NO_CXX14_DIGIT_SEPARATORS // TITLE: C++14 digit separator unavailable // DESCRIPTION: The compiler does not support C++14 digit separator diff --git a/test/config_info.cpp b/test/config_info.cpp index 1c96194c..b1fcf516 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1059,7 +1059,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_CXX14_BINARY_LITERALS); PRINT_MACRO(BOOST_NO_CXX14_CONSTEXPR); PRINT_MACRO(BOOST_NO_CXX14_DECLTYPE_AUTO); - PRINT_MACRO(BOOST_NO_CXX14_DIGIT_SEPARATOR); + PRINT_MACRO(BOOST_NO_CXX14_DIGIT_SEPARATORS); PRINT_MACRO(BOOST_NO_CXX14_GENERIC_LAMBDAS); PRINT_MACRO(BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES); PRINT_MACRO(BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION); diff --git a/test/config_test.cpp b/test/config_test.cpp index 5af88239..b266f4eb 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -277,7 +277,7 @@ namespace boost_no_cxx14_constexpr = empty_boost; #else namespace boost_no_cxx14_decltype_auto = empty_boost; #endif -#ifndef BOOST_NO_CXX14_DIGIT_SEPARATOR +#ifndef BOOST_NO_CXX14_DIGIT_SEPARATORS #include "boost_no_cxx14_digit_separator.ipp" #else namespace boost_no_cxx14_digit_separator = empty_boost; @@ -1503,7 +1503,7 @@ int main( int, char *[] ) } if(0 != boost_no_cxx14_digit_separator::test()) { - std::cerr << "Failed test for BOOST_NO_CXX14_DIGIT_SEPARATOR at: " << __FILE__ << ":" << __LINE__ << std::endl; + std::cerr << "Failed test for BOOST_NO_CXX14_DIGIT_SEPARATORS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } if(0 != boost_no_cxx14_generic_lambdas::test()) diff --git a/test/no_cxx14_digit_separator_fail.cpp b/test/no_cxx14_digit_separator_fail.cpp index 99305f50..8c0c06a1 100644 --- a/test/no_cxx14_digit_separator_fail.cpp +++ b/test/no_cxx14_digit_separator_fail.cpp @@ -10,9 +10,9 @@ // -// Test file for macro BOOST_NO_CXX14_DIGIT_SEPARATOR +// Test file for macro BOOST_NO_CXX14_DIGIT_SEPARATORS // This file should not compile, if it does then -// BOOST_NO_CXX14_DIGIT_SEPARATOR should not be defined. +// BOOST_NO_CXX14_DIGIT_SEPARATORS should not be defined. // See file boost_no_cxx14_digit_separator.ipp for details // Must not have BOOST_ASSERT_CONFIG set; it defeats @@ -24,7 +24,7 @@ #include #include "test.hpp" -#ifdef BOOST_NO_CXX14_DIGIT_SEPARATOR +#ifdef BOOST_NO_CXX14_DIGIT_SEPARATORS #include "boost_no_cxx14_digit_separator.ipp" #else #error "this file should not compile" diff --git a/test/no_cxx14_digit_separator_pass.cpp b/test/no_cxx14_digit_separator_pass.cpp index 4c26df6f..bb88cd29 100644 --- a/test/no_cxx14_digit_separator_pass.cpp +++ b/test/no_cxx14_digit_separator_pass.cpp @@ -10,9 +10,9 @@ // -// Test file for macro BOOST_NO_CXX14_DIGIT_SEPARATOR +// Test file for macro BOOST_NO_CXX14_DIGIT_SEPARATORS // This file should compile, if it does not then -// BOOST_NO_CXX14_DIGIT_SEPARATOR should be defined. +// BOOST_NO_CXX14_DIGIT_SEPARATORS should be defined. // See file boost_no_cxx14_digit_separator.ipp for details // Must not have BOOST_ASSERT_CONFIG set; it defeats @@ -24,7 +24,7 @@ #include #include "test.hpp" -#ifndef BOOST_NO_CXX14_DIGIT_SEPARATOR +#ifndef BOOST_NO_CXX14_DIGIT_SEPARATORS #include "boost_no_cxx14_digit_separator.ipp" #else namespace boost_no_cxx14_digit_separator = empty_boost;