mirror of
https://github.com/boostorg/config.git
synced 2025-07-31 21:04:28 +02:00
Add new macro BOOST_NO_CXX11_USER_DEFINED_LITERALS.
Regenerate tests and docs. [SVN r84074]
This commit is contained in:
@@ -2974,6 +2974,18 @@
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_USER_DEFINED_LITERALS</span></code>
|
||||
</p>
|
||||
</td>
|
||||
<td>
|
||||
<p>
|
||||
The compiler does not support user defined literals.
|
||||
</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>
|
||||
<p>
|
||||
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_TEMPLATES</span></code>
|
||||
|
@@ -951,7 +951,7 @@
|
||||
</div>
|
||||
</div>
|
||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||
<td align="left"><p><small>Last revised: April 18, 2013 at 17:44:14 GMT</small></p></td>
|
||||
<td align="left"><p><small>Last revised: April 28, 2013 at 17:55:14 GMT</small></p></td>
|
||||
<td align="right"><div class="copyright-footer"></div></td>
|
||||
</tr></table>
|
||||
<hr>
|
||||
|
@@ -675,6 +675,8 @@ Unicode (`u8`, `u`, `U`) literals.
|
||||
[[`BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX`][The compiler does not support
|
||||
the [@http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization C++11 Unified Initialization Syntax].
|
||||
]]
|
||||
[[`BOOST_NO_CXX11_USER_DEFINED_LITERALS`][The compiler does not support user defined literals.
|
||||
]]
|
||||
[[`BOOST_NO_CXX11_VARIADIC_TEMPLATES`][The compiler does not support
|
||||
variadic templates.
|
||||
]]
|
||||
|
@@ -190,6 +190,7 @@
|
||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
#define BOOST_NO_CXX11_NOEXCEPT
|
||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
#if __BORLANDC__ >= 0x590
|
||||
# define BOOST_HAS_TR1_HASH
|
||||
|
@@ -142,6 +142,10 @@
|
||||
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
#endif
|
||||
|
||||
#if !__has_feature(cxx_user_literals)
|
||||
# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
#endif
|
||||
|
||||
// Clang always supports variadic macros
|
||||
// Clang always supports extern templates
|
||||
|
||||
|
@@ -110,6 +110,7 @@
|
||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
|
||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
//
|
||||
// TR1 macros:
|
||||
|
@@ -95,6 +95,7 @@
|
||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
|
||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
#ifdef c_plusplus
|
||||
// EDG has "long long" in non-strict mode
|
||||
|
@@ -51,6 +51,7 @@
|
||||
#define BOOST_NO_CXX11_DECLTYPE_N3276
|
||||
#define BOOST_NO_CXX11_DECLTYPE
|
||||
#define BOOST_NO_CXX11_CONSTEXPR
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||
#define BOOST_NO_CXX11_CHAR32_T
|
||||
#define BOOST_NO_CXX11_CHAR16_T
|
||||
|
@@ -86,6 +86,7 @@
|
||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
|
||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
#if (__DMC__ < 0x812)
|
||||
#define BOOST_NO_CXX11_VARIADIC_MACROS
|
||||
|
@@ -240,6 +240,7 @@
|
||||
//
|
||||
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) || !defined(__GXX_EXPERIMENTAL_CXX0X__)
|
||||
# define BOOST_NO_CXX11_TEMPLATE_ALIASES
|
||||
# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
#endif
|
||||
|
||||
// C++0x features in 4.8.1 and later
|
||||
|
@@ -53,7 +53,8 @@
|
||||
# define BOOST_NO_CXX11_RAW_LITERALS
|
||||
# define BOOST_NO_CXX11_UNICODE_LITERALS
|
||||
# define BOOST_NO_CXX11_NOEXCEPT
|
||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
|
||||
|
||||
|
@@ -118,6 +118,7 @@
|
||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
|
||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
|
||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
/*
|
||||
See https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443331 and
|
||||
|
@@ -119,6 +119,7 @@
|
||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
#define BOOST_NO_CXX11_VARIADIC_MACROS
|
||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
|
||||
|
||||
|
@@ -68,6 +68,7 @@
|
||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
#define BOOST_NO_CXX11_VARIADIC_MACROS
|
||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
//
|
||||
// versions check:
|
||||
|
@@ -76,5 +76,6 @@
|
||||
# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
|
||||
# define BOOST_NO_CXX11_HDR_CODECVT
|
||||
# define BOOST_NO_CXX11_HDR_CHRONO
|
||||
# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
#endif
|
||||
|
||||
|
@@ -111,6 +111,7 @@
|
||||
#define BOOST_NO_CXX11_HDR_CODECVT
|
||||
#define BOOST_NO_CXX11_HDR_CHRONO
|
||||
#define BOOST_NO_CXX11_HDR_ARRAY
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
//
|
||||
// version check:
|
||||
|
@@ -127,6 +127,7 @@
|
||||
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
|
||||
#define BOOST_NO_CXX11_VARIADIC_MACROS
|
||||
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
//
|
||||
// Version
|
||||
|
@@ -106,6 +106,7 @@
|
||||
#define BOOST_NO_CXX11_NULLPTR
|
||||
#define BOOST_NO_CXX11_RANGE_BASED_FOR
|
||||
#define BOOST_NO_CXX11_RAW_LITERALS
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
#if ! __IBMCPP_RVALUE_REFERENCES
|
||||
# define BOOST_NO_CXX11_RVALUE_REFERENCES
|
||||
#endif
|
||||
|
@@ -241,6 +241,7 @@
|
||||
#define BOOST_NO_CXX11_UNICODE_LITERALS
|
||||
#define BOOST_NO_SFINAE_EXPR
|
||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||
#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
|
||||
//
|
||||
// prefix and suffix headers:
|
||||
|
File diff suppressed because it is too large
Load Diff
67
test/boost_no_cxx11_user_lit.ipp
Normal file
67
test/boost_no_cxx11_user_lit.ipp
Normal file
@@ -0,0 +1,67 @@
|
||||
// (C) Copyright John Maddock 2013
|
||||
|
||||
// Use, modification and distribution are subject to 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)
|
||||
|
||||
// See http://www.boost.org/libs/config for more information.
|
||||
|
||||
// MACRO: BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
// TITLE: C++11 user defined literals.
|
||||
// DESCRIPTION: The compiler does not support the C++11 literals including user-defined suffixes.
|
||||
|
||||
#include <memory>
|
||||
|
||||
namespace boost_no_cxx11_user_defined_literals {
|
||||
|
||||
struct my_literal
|
||||
{
|
||||
constexpr my_literal() : val(0) {}
|
||||
constexpr my_literal(int i) : val(i) {}
|
||||
constexpr my_literal(const my_literal& a) : val(a.val) {}
|
||||
constexpr bool operator==(const my_literal& a) { return val == a.val; }
|
||||
int val;
|
||||
};
|
||||
|
||||
template <unsigned base, unsigned long long val, char... Digits>
|
||||
struct parse_int
|
||||
{
|
||||
// The default specialization is also the termination condition:
|
||||
// it gets invoked only when sizeof...Digits == 0.
|
||||
static_assert(base<=16u,"only support up to hexadecimal");
|
||||
static constexpr unsigned long long value{ val };
|
||||
};
|
||||
|
||||
template <unsigned base, unsigned long long val, char c, char... Digits>
|
||||
struct parse_int<base, val, c, Digits...>
|
||||
{
|
||||
static constexpr unsigned long long char_value = (c >= '0' && c <= '9')
|
||||
? c - '0'
|
||||
: (c >= 'a' && c <= 'f')
|
||||
? c - 'a'
|
||||
: (c >= 'A' && c <= 'F')
|
||||
? c - 'A'
|
||||
: 400u;
|
||||
static_assert(char_value < base, "Encountered a digit out of range");
|
||||
static constexpr unsigned long long value{ parse_int<base, val * base +
|
||||
char_value, Digits...>::value };
|
||||
};
|
||||
|
||||
constexpr my_literal operator "" _suf1(unsigned long long v)
|
||||
{
|
||||
return my_literal(v);
|
||||
}
|
||||
template <char...PACK>
|
||||
constexpr my_literal operator "" _bin()
|
||||
{
|
||||
return parse_int<2, 0, PACK...>::value;
|
||||
}
|
||||
|
||||
int test()
|
||||
{
|
||||
constexpr my_literal a = 0x23_suf1;
|
||||
constexpr my_literal b = 1001_bin;
|
||||
return ((a == my_literal(0x23)) && (b == my_literal(9))) ? 0 : 1;
|
||||
}
|
||||
|
||||
}
|
@@ -1039,6 +1039,7 @@ void print_boost_macros()
|
||||
PRINT_MACRO(BOOST_NO_CXX11_TEMPLATE_ALIASES);
|
||||
PRINT_MACRO(BOOST_NO_CXX11_UNICODE_LITERALS);
|
||||
PRINT_MACRO(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX);
|
||||
PRINT_MACRO(BOOST_NO_CXX11_USER_DEFINED_LITERALS);
|
||||
PRINT_MACRO(BOOST_NO_CXX11_VARIADIC_MACROS);
|
||||
PRINT_MACRO(BOOST_NO_CXX11_VARIADIC_TEMPLATES);
|
||||
PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS);
|
||||
@@ -1100,6 +1101,8 @@ void print_boost_macros()
|
||||
PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
|
||||
PRINT_MACRO(BOOST_NO_VOID_RETURNS);
|
||||
|
||||
|
||||
|
||||
// END GENERATED BLOCK
|
||||
|
||||
PRINT_MACRO(BOOST_INTEL);
|
||||
|
2980
test/config_test.cpp
2980
test/config_test.cpp
File diff suppressed because it is too large
Load Diff
37
test/no_cxx11_user_lit_fail.cpp
Normal file
37
test/no_cxx11_user_lit_fail.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
// This file was automatically generated on Sun Apr 28 18:36:48 2013
|
||||
// by libs/config/tools/generate.cpp
|
||||
// Copyright John Maddock 2002-4.
|
||||
// Use, modification and distribution are subject to 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)
|
||||
|
||||
// See http://www.boost.org/libs/config for the most recent version.//
|
||||
// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
|
||||
//
|
||||
|
||||
|
||||
// Test file for macro BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
// This file should not compile, if it does then
|
||||
// BOOST_NO_CXX11_USER_DEFINED_LITERALS should not be defined.
|
||||
// See file boost_no_cxx11_user_lit.ipp for details
|
||||
|
||||
// Must not have BOOST_ASSERT_CONFIG set; it defeats
|
||||
// the objective of this file:
|
||||
#ifdef BOOST_ASSERT_CONFIG
|
||||
# undef BOOST_ASSERT_CONFIG
|
||||
#endif
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include "test.hpp"
|
||||
|
||||
#ifdef BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
#include "boost_no_cxx11_user_lit.ipp"
|
||||
#else
|
||||
#error "this file should not compile"
|
||||
#endif
|
||||
|
||||
int main( int, char *[] )
|
||||
{
|
||||
return boost_no_cxx11_user_defined_literals::test();
|
||||
}
|
||||
|
37
test/no_cxx11_user_lit_pass.cpp
Normal file
37
test/no_cxx11_user_lit_pass.cpp
Normal file
@@ -0,0 +1,37 @@
|
||||
// This file was automatically generated on Sun Apr 28 18:36:48 2013
|
||||
// by libs/config/tools/generate.cpp
|
||||
// Copyright John Maddock 2002-4.
|
||||
// Use, modification and distribution are subject to 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)
|
||||
|
||||
// See http://www.boost.org/libs/config for the most recent version.//
|
||||
// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
|
||||
//
|
||||
|
||||
|
||||
// Test file for macro BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
// This file should compile, if it does not then
|
||||
// BOOST_NO_CXX11_USER_DEFINED_LITERALS should be defined.
|
||||
// See file boost_no_cxx11_user_lit.ipp for details
|
||||
|
||||
// Must not have BOOST_ASSERT_CONFIG set; it defeats
|
||||
// the objective of this file:
|
||||
#ifdef BOOST_ASSERT_CONFIG
|
||||
# undef BOOST_ASSERT_CONFIG
|
||||
#endif
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include "test.hpp"
|
||||
|
||||
#ifndef BOOST_NO_CXX11_USER_DEFINED_LITERALS
|
||||
#include "boost_no_cxx11_user_lit.ipp"
|
||||
#else
|
||||
namespace boost_no_cxx11_user_defined_literals = empty_boost;
|
||||
#endif
|
||||
|
||||
int main( int, char *[] )
|
||||
{
|
||||
return boost_no_cxx11_user_defined_literals::test();
|
||||
}
|
||||
|
Reference in New Issue
Block a user