-
Notifications
You must be signed in to change notification settings - Fork 541
Description
Steps to reproduce the issue
$ spack spec -I qt@5 ^icu4u@75:doesn't build as cxxstd=14 is being used by moc (?), as auto used in this template location is a C++17 features
https://en.cppreference.com/w/cpp/language/template_parameters.html#Constant_template_parameter
I am using gcc@14 which should default to c++17, but looking through the log shows a bunch of c++1y being invoked, so moc must be be using an older standard. I'm not super familiar with qt to know where exactly
Error message
In file included from /spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/ubidi.h:26,
from platform/default/bidi.cpp:4:
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/localpointer.h:561:26: error: 'auto' parameter not permitted in this context
561 | template <typename Type, auto closeFunction>
| ^~~~
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/localpointer.h:573:76: error: template argument 2 is invalid
573 | explicit LocalOpenPointer(std::unique_ptr<Type, decltype(closeFunction)> &&p)
| ^
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/localpointer.h:583:78: error: template argument 2 is invalid
583 | LocalOpenPointer &operator=(std::unique_ptr<Type, decltype(closeFunction)> &&p) {
| ^
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/localpointer.h:599:59: error: template argument 2 is invalid
599 | operator std::unique_ptr<Type, decltype(closeFunction)> () && {
| ^
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/localpointer.h:551:81: note: invalid template non-type parameter
551 | using LocalPointerClassName = internal::LocalOpenPointer<Type, closeFunction>
| ^
/spack/opt/linux-icelake/icu4c-76.1-ory254wyuu2esx3wgnbp5vmxk23o7wai/include/unicode/ubidi.h:579:1: note: in expansion of macro 'U_DEFINE_LOCAL_OPEN_POINTER'
579 | U_DEFINE_LOCAL_OPEN_POINTER(LocalUBiDiPointer, UBiDi, ubidi_close);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~
Information on your system
spack debug report
* **Spack:** 1.2.0.dev0 (https://github.com/spack/spack/commit/3ba5b7658b21b265a4973788bc16266471a7aa93)
* **Builtin repo:** https://github.com/spack/spack-packages/commit/2bd9d1fea9ad61845cd3533acca60c4764431e02
* **Python:** 3.6.8
* **Platform:** linux-rhel8-icelake
Additional information
icu4c@75: requires cxxstd=17 to compile, 9b61cbe. However, there is no cxxstd propagation to qt, resulting in qt using a mismatched cxxstd to compile newer icu4c.
Given the complexity of qt , I am not sure what the repercussions of adding cxxstd variants to qt are. Or what is the most spack-way to model this correctly.
Hit list of recent contributors:
@AlexanderRichert-NOAA @johnwparent @adamjstewart @wdconinc @haampie
General information
- I have run
spack debug reportand reported the version of Spack/Python/Platform - I have run
spack maintainers <name-of-the-package>and @mentioned any maintainers - I have uploaded the build log and environment files
- I have searched the issues of this repo and believe this is not a duplicate