Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

compile with clang 20.1.0 error: 'lifetimebound' attribute cannot be applied to a.... #5271

Open
marakew opened this issue Feb 5, 2025 · 2 comments
Labels
bug Something isn't working

Comments

@marakew
Copy link

marakew commented Feb 5, 2025

[5/6] D:\LLVM-20.x.x-win64\bin\clang++.exe  -isystem D:/msvc/VC/Tools/MSVC/14.43.34808/include -isystem D:/msvc/V
C/Tools/MSVC/14.43.34808/atlmfc/include -isystem "D:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/ucr
t" -isystem "D:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/shared" -isystem "D:/Program Files (x86)
/Windows Kits/10/Include/10.0.18362.0/um" -isystem "D:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/w
inrt" -O3 -DNDEBUG -std=c++20 -Xclang -flto-visibility-public-std -D_MT -Xclang --dependent-lib=libcmt -MD -MT CM
akeFiles/demo.dir/main.cpp.obj -MF CMakeFiles\demo.dir\main.cpp.obj.d @CMakeFiles\demo.dir\main.cpp.obj.modmap -o
 CMakeFiles/demo.dir/main.cpp.obj -c D:/T60/test/CMake_Modules/main.cpp
FAILED: CMakeFiles/demo.dir/main.cpp.obj
D:\LLVM-20.x.x-win64\bin\clang++.exe  -isystem D:/msvc/VC/Tools/MSVC/14.43.34808/include -isystem D:/msvc/VC/Tool
s/MSVC/14.43.34808/atlmfc/include -isystem "D:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/ucrt" -is
ystem "D:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/shared" -isystem "D:/Program Files (x86)/Windo
ws Kits/10/Include/10.0.18362.0/um" -isystem "D:/Program Files (x86)/Windows Kits/10/Include/10.0.18362.0/winrt"
-O3 -DNDEBUG -std=c++20 -Xclang -flto-visibility-public-std -D_MT -Xclang --dependent-lib=libcmt -MD -MT CMakeFil
es/demo.dir/main.cpp.obj -MF CMakeFiles\demo.dir\main.cpp.obj.d @CMakeFiles\demo.dir\main.cpp.obj.modmap -o CMake
Files/demo.dir/main.cpp.obj -c D:/T60/test/CMake_Modules/main.cpp
In module 'MyModule' imported from D:/T60/test/CMake_Modules/main.cpp:1:
D:/msvc/VC/Tools/MSVC/14.43.34808/include\utility:784:6: error: 'lifetimebound' attribute cannot be applied to a
parameter of a function that returns void; did you mean 'lifetime_capture_by(X)'
  784 | void as_const(const _Ty&&) = delete;
      |      ^
1 error generated.
ninja: build stopped: subcommand failed.

is it clang issue or msvc stl ?

@StephanTLavavej StephanTLavavej added the bug Something isn't working label Feb 5, 2025
@StephanTLavavej
Copy link
Member

This is very likely a bug in MSVC's STL. We haven't yet checked our implementation against Clang 20 (as VS is currently shipping Clang 19) - thanks for the heads up.

@frederick-vs-ja
Copy link
Contributor

llvm/llvm-project@31b0be4 and LLVM-114203 seem related.

This is possibly a bug of Clang as we aren't applying [[clang::lifetimebound]] to that overload.

STL/stl/inc/utility

Lines 778 to 784 in fc15609

_EXPORT_STD template <class _Ty>
_NODISCARD _MSVC_INTRINSIC constexpr add_const_t<_Ty>& as_const(_Ty& _Val) noexcept { // view _Val through const lenses
return _Val;
}
_EXPORT_STD template <class _Ty>
void as_const(const _Ty&&) = delete;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants