168 Commits

Author SHA1 Message Date
Antony Polukhin
184f7e43f0 Update copyright years 2026-01-04 11:10:09 +03:00
Antony Polukhin
1b804c7a31 Implement initial version of C++20 module boost.lexical_cast (#84) 2025-12-11 22:17:21 +03:00
Antony Polukhin
275844e651 Fix regression in unsigned short to wstring casting without wchar_t b… (#92)
…uiltin type

Fixes: https://github.com/boostorg/lexical_cast/issues/89
2025-10-16 09:15:33 +03:00
Antony Polukhin
1084d98719 More tests and fixes for floating-point special value conversions to integers and bool (#91)
Fixes: https://github.com/boostorg/lexical_cast/issues/81
2025-10-11 17:36:58 +03:00
Antony Polukhin
7f60da84c3 Run all the tests in CMake, add CMake runs into CI. Drop dependency on Boost.TypeTraits (#90) 2025-10-07 20:25:13 +03:00
Romain Geissler @ Amadeus
8fc8a19931 Reduce dependency on Boost.TypeTraits now that C++ >= 11 is required. (#87)
This allows to workaround the following error when using clang >= 21 on the following code:

```
#include <string>
#include <iostream>
#include "boost/lexical_cast.hpp"

enum SomeEnum
{
    OneValue
};

int main()
{
    std::cout << boost::lexical_cast<std::string>(SomeEnum::OneValue) << std::endl;
}
```

Results in:

```
/app/boost/include/boost/type_traits/is_signed.hpp:37:25: error: in-class initializer for static data member is not a constant expression
   37 |    static const no_cv_t minus_one = (static_cast<no_cv_t>(-1));

... (snapped)

/app/boost/include/boost/type_traits/is_signed.hpp:37:38: note: integer value -1 is outside the valid range of values [0, 1] for the enumeration type 'SomeEnum'
   37 |    static const no_cv_t minus_one = (static_cast<no_cv_t>(-1));
```
2025-10-05 12:14:47 +03:00
Antony Polukhin
4862e296d0 CI fixes (#88) 2025-09-08 09:02:39 +03:00
Antony Polukhin
5326b49475 Do not permit implicit conversions to floating point types in decltype(shl_real_type(x, buffer)) substitution (fixes #82) (#83) 2025-05-13 19:32:21 +03:00
Antony Polukhin
1c89e3a56c Update copyright years 2025-01-05 19:41:20 +03:00
René Ferdinand Rivera Morell
71a184d20f Add support for modular build structure. (#78)
This is part of the effort to make the Boost libraries "modular" for build and consumption. See https://lists.boost.org/Archives/boost/2024/01/255704.php and https://github.com/grafikrobot/boost-b2-modular/blob/b2-modular/README.adoc for more information.

This PR depends on the following other PRs being merged to both develop and master branches of the respective repos:

- https://github.com/boostorg/boost/pull/854
2024-08-25 09:57:23 +03:00
Antony Polukhin
7f121f8ce3 Drop Boost.Integer dependency (#79) 2024-08-14 21:15:33 +03:00
Antony Polukhin
ff2f0496b0 Fixed conversion of std::basic_string_view and boost::basic_string_view containing one or more \0 characters.
Issue was introduced in 1.85.0
2024-07-07 20:08:13 +03:00
René Ferdinand Rivera Morell
92e55e842e Add macOS testing. (#75)
Fixes https://github.com/boostorg/lexical_cast/issues/76
---------

Co-authored-by: Antony Polukhin <antoshkka@gmail.com>
2024-04-12 19:12:54 +03:00
Antony Polukhin
02e5821ab3 Do not use custom traits from input/output types as it leads to linktime or runtime errors (fixes #46) (#74) 2024-02-15 11:50:10 +03:00
Antony Polukhin
3433c34b43 Suppress the unsigned-integer-overflow sanitizer warnings and do not recover from the integer sanitizer errors (fixes #45) (#73) 2024-02-15 09:24:44 +03:00
Antony Polukhin
518e28ff79 Dropped dependency on Boost.NumericConversion and Boost.MPL (#72)
Fix some corner cases of floating-point conversions (infinities to infinities of smaller type, fractional numbers to integers)
2024-02-13 10:55:25 +03:00
Antony Polukhin
31e0fcde67 Optimizations for std::basic_string_view ans boost::basic_string_view (ref https://github.com/boostorg/lexical_cast/issues/30) (#70) 2024-01-26 20:16:50 +03:00
Antony Polukhin
f0862bb60d Significant rewrite of the internal logic to separate optimized and C++ Standard Library IO-based streams (#69)
* C++ Standard Library based streams now constructed in less cases leading to **better performance**;
* less template instantiations and simpler maintainance;
* support for `volatile` input types was dropped, following the C++ Standard Library trend.
2024-01-24 22:35:41 +03:00
Antony Polukhin
fe9ee41f5c Reduce template instantiations count by using template aliases (#67) 2024-01-21 14:23:33 +03:00
Antony Polukhin
90ec909dcf Update copyright years 2024-01-07 13:22:00 +03:00
Antony Polukhin
a713e09eab Update copyright years 2024-01-07 13:06:23 +03:00
Antony Polukhin
af5ce2a5fe Drop C++03 and C++98 support (#62)
Also update tests to not use Boost.Test
2023-09-02 17:42:14 +03:00
Antony Polukhin
32e9b6d2a0 Update copyright years 2023-01-19 10:00:15 +03:00
Antony Polukhin
403d79edc7 fix compilation for casting volatile arithmetic types
Fixes #50
2022-09-01 13:53:46 +03:00
fanquake
b302988907 refactor: use core/noncopyable over boost/noncopyable
The later is deprecated:
```cpp
// The header file at this path is deprecated;
// use boost/core/noncopyable.hpp instead.

include <boost/core/noncopyable.hpp>
```
2022-08-24 12:34:18 +01:00
Antony Polukhin
a9f2961159 update copyright years 2022-01-30 13:03:00 +03:00
Antony Polukhin
f071fb83cf typo fix 2021-05-03 19:10:31 +03:00
Antony Polukhin
ce73b6adfc do not test 128bit integral types on MacOs because of the Apple Clang issue 2021-05-03 17:36:53 +03:00
Antony Polukhin
88f5967805 fix tests compilation on C++20 (wide char operator<< overloads are deleted) 2021-05-02 17:38:32 +03:00
Antony Polukhin
eb3bda9563 fixes for wide char tests 2021-05-02 13:13:30 +03:00
Antony Polukhin
c95b9adbab fixes for CI runs 2021-04-26 20:56:15 +03:00
Antony Polukhin
945c095a4b do not use Boost.Math in tests 2021-04-26 10:44:22 +03:00
Antony Polukhin
f0e2fa3dd3 make tests work in C++03 modes 2021-04-26 10:12:28 +03:00
Antony Polukhin
0d920e632f disable long double tests on mingw64 because of the issues with precision 2021-01-07 18:37:24 +03:00
Antony Polukhin
2993c99813 disable long double tests on MinGW because of the issues with precision 2021-01-06 21:25:31 +03:00
Antony Polukhin
cb585ca6cb disable long double tests on mingw64 because of the issues with precision 2021-01-06 12:04:51 +03:00
Antony Polukhin
29ddb588b2 add missing header 2021-01-05 17:21:20 +03:00
Antony Polukhin
9c38b33f65 remove trailing whitespace 2021-01-05 12:25:39 +03:00
Antony Polukhin
745b4dc4ac workaround b2 issues with long filenames (again) 2021-01-05 12:21:37 +03:00
Antony Polukhin
e677e3fc89 workaround b2 issues with long filenames 2021-01-04 22:10:48 +03:00
Antony Polukhin
3dfb2a31ec Make tests for typedefed wchar_t more reliable 2021-01-04 18:41:45 +03:00
Antony Polukhin
a96a262fdc Modern Appveyor file 2021-01-04 11:11:24 +03:00
Antony Polukhin
08bce247f0 update copyright years 2021-01-03 14:20:39 +03:00
Antony Polukhin
4280c94a1a Move Escape struct into a separate header and rename it to avoid collisions with Windows function name 2020-05-05 19:50:33 +03:00
Edward Diener
8ffb03760f Avoid name conflict with Windows GDI function also called 'Escape' by referring specifically to struct type. 2020-04-04 04:50:01 -04:00
Edward Diener
ddf96e0307 Fixed type as struct to avoid conflict with Windows function name. Specified FILE as std::FILE when cstdio is being included. 2020-04-03 20:48:24 -04:00
Antony Polukhin
207d9845da update copyright year 2020-01-18 14:08:35 +03:00
Nikita Kniazev
87707d7fb9 Run test with truly disabled exceptions 2019-12-02 20:59:34 +03:00
Antony Polukhin
7bcebb0bc2 inspect tool fixes 2019-11-15 13:35:57 +03:00
Antony Polukhin
87ce721928 More tests and comments for fs::path conversions (refs #25) 2019-06-23 13:12:00 +03:00