microsoft / microsoft/msix-packaging
[BUG] error: no member named 'is_convertible_v' in namespace 'std'
Nobody has claimed this yet.
- Dominant language
- C
- Stars
- 1.1k
- Forks
- 193
- Avg merge
- 2h 16m
- Merged PRs (30d)
- 2
Description
Describe the bug
When I try to compile makemsix, I get an error about the C++ standard library API member is_convertible_v and many other members being missing.
813.8 /usr/include/unicode/char16ptr.h:317:10: error: no member named 'is_convertible_v' in namespace 'std'
813.8 317 | std::is_convertible_v<T, std::u16string_view>
813.8 | ~~~~~^
813.8 /usr/include/unicode/char16ptr.h:317:27: error: 'T' does not refer to a value
813.8 317 | std::is_convertible_v<T, std::u16string_view>
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:315:19: note: declared here
813.8 315 | template<typename T>
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:317:28: error: a template declaration can only declare a single entity
813.8 317 | std::is_convertible_v<T, std::u16string_view>
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:317:35: error: cannot define or redeclare 'u16string_view' here because namespace 'icu_76' does not enclose namespace 'std'
813.8 317 | std::is_convertible_v<T, std::u16string_view>
813.8 | ~~~~~^
813.8 /usr/include/unicode/char16ptr.h:317:35: error: no member named 'u16string_view' in namespace 'std'
813.8 317 | std::is_convertible_v<T, std::u16string_view>
813.8 | ~~~~~^
813.8 /usr/include/unicode/char16ptr.h:317:49: error: expected ';' after top level declarator
813.8 317 | std::is_convertible_v<T, std::u16string_view>
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:331:13: error: no type named 'u16string_view' in namespace 'std'
813.8 331 | inline std::u16string_view toU16StringView(std::u16string_view sv) { return sv; }
813.8 | ~~~~~^
813.8 /usr/include/unicode/char16ptr.h:331:49: error: use of variable template 'std::u16string_view' requires template arguments
813.8 331 | inline std::u16string_view toU16StringView(std::u16string_view sv) { return sv; }
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:317:35: note: template is declared here
813.8 315 | template<typename T>
813.8 | ~~~~~~~~~~~~~~~~~~~~
813.8 316 | constexpr bool ConvertibleToU16StringView =
813.8 317 | std::is_convertible_v<T, std::u16string_view>
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:331:67: error: expected ';' after top level declarator
813.8 331 | inline std::u16string_view toU16StringView(std::u16string_view sv) { return sv; }
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:339:13: error: no type named 'u16string_view' in namespace 'std'
813.8 339 | inline std::u16string_view toU16StringView(std::basic_string_view<uint16_t> sv) {
813.8 | ~~~~~^
813.8 /usr/include/unicode/char16ptr.h:339:49: error: no member named 'basic_string_view' in namespace 'std'
813.8 339 | inline std::u16string_view toU16StringView(std::basic_string_view<uint16_t> sv) {
813.8 | ~~~~~^
813.8 /usr/include/unicode/char16ptr.h:339:67: error: unexpected type name 'uint16_t': expected expression
813.8 339 | inline std::u16string_view toU16StringView(std::basic_string_view<uint16_t> sv) {
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:339:77: error: use of undeclared identifier 'sv'
813.8 339 | inline std::u16string_view toU16StringView(std::basic_string_view<uint16_t> sv) {
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:339:80: error: expected ';' after top level declarator
813.8 339 | inline std::u16string_view toU16StringView(std::basic_string_view<uint16_t> sv) {
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:360:36: error: no type named 'enable_if_t' in namespace 'std'
813.8 360 | typename = typename std::enable_if_t<!std::is_pointer_v<std::remove_reference_t<T>>>>
813.8 | ~~~~~~~~~~~~~~^~~~~~~~~~~
813.8 /usr/include/unicode/char16ptr.h:360:47: error: expected ',' or '>' in template-parameter-list
813.8 360 | typename = typename std::enable_if_t<!std::is_pointer_v<std::remove_reference_t<T>>>>
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:360:93: error: expected unqualified-id
813.8 360 | typename = typename std::enable_if_t<!std::is_pointer_v<std::remove_reference_t<T>>>>
813.8 | ^
813.8 /usr/include/unicode/char16ptr.h:370:36: error: no type named 'enable_if_t' in namespace 'std'
813.8 370 | typename = typename std::enable_if_t<std::is_pointer_v<std::remove_reference_t<T>>>,
813.8 | ~~~~~~~~~~~~~~^~~~~~~~~~~
813.8 /usr/include/unicode/char16ptr.h:370:47: error: expected ',' or '>' in template-parameter-list
813.8 370 | typename = typename std::enable_if_t<std::is_pointer_v<std::remove_reference_t<T>>>,
813.8 | ^
813.8 fatal error: too many errors emitted, stopping now [-ferror-limit=]
814.1 20 errors generated.
814.2 make[2]: *** [lib/xerces/src/CMakeFiles/xerces-c.dir/build.make:457: lib/xerces/src/CMakeFiles/xerces-c.dir/xercesc/util/regx/RangeToken.cpp.o] Error 1
814.2 make[1]: *** [CMakeFiles/Makefile2:659: lib/xerces/src/CMakeFiles/xerces-c.dir/all] Error 2
To Reproduce
./makelinux.sh && ./makeaosp.sh with apt clang, from Ubuntu 25.04, on Docker, on macOS Tahoe, on Apple Silicon.
Expected behavior
The build instructions in the README should generally work on modern, LTS Linux distros.
I believe that member is available as of C++17. I am using the latest stable clang from the Ubuntu 25.04 apt repository. Ubuntu's clang since clang v16, has defaulted to C++17 or higher. Not sure how the members are ending up missing.
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the README build instructions and the makelinux.sh and makeaosp.sh entry points, then reproduce the failure on Ubuntu 25.04 with apt clang. Inspect the CMake configuration around the xerces-c build and the failing RangeToken.cpp target to determine why the C++ standard library members are unavailable. Done means the documented builds complete on the reported modern environments.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cmake, cpp, docker, macos, ubuntu
- Domain
- build-system, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100