constexpr

设置元组的值,类型从常量的std::array, …> 中推断

Greggs 是一个类,其内部包含元组 sausage_roll 和常量数组 flavours。这个元组包含 ints和 strings,而数组由 variants构成。 The makeOrder method should set a value in the sausage_roll tuple, knowing its type based on the flavours variant at that particular index. This method must be callable

是否可以在编译时判断一个string_view是否指向一个字符串字面量?

我想返回一个视图的子视图,同时尽量避免分配新的字符串。 因此如果输入的视图引用的是一个字符串字面量,我可以返回一个 std::string_view,否则我必须返回一个 std::string。 constexpr auto process(std::string_view input) { std::string_view result; ... // results is now a sub-string-view of input if constexpr ("input is referring

带有常量内联类成员的std::format会导致“对consteval函数的调用未产生有效的常量表达式”

我有一个用公开常量定义的 Constants 类: class Constants { public: //... inline static const std::wstring SPECIAL_FOLDER_KEY = L""; }; 现在,我需要使用 std::format() 基于占位符替换来返回一个新字符串: std::wstring folderName = ...; std::wstring specialFolderKey = std::format(

今天C++23的 std::is_implicit_lifetime有问题吗?

我在clang 22.1并使用 -stdlib=libc++实现 std::is_implicit_lifetime 时尝试了以下内容: #include #include #include struct TC_NotILT { int val; // user-declared constructors thus not an aggregate, thus not implicit lifetime type TC_NotILT(i

EDG与 GCC/Clang在常量表达式中对右值引用行为的差异

我写了以下程序,它被MSVC与 EDG接受,但被clang与 gcc拒绝。 演示。 template struct s{ constexpr static const int&& n = N; constexpr static int&& p = N; }; template void f() { static_assert(T::n == 1); } template void g() { static_assert(T::p == 1);

在constexpr的上下文中使用consteval函数参数

我在尝试在constexpr上下文中使用一个consteval函数参数: consteval auto foo(int size) { std::array arr; // error: size is not constexpr auto const_size = std::meta::reflect_constant(size); auto array_type = std::meta::substitute(^^std::array, {^^int, const_size});

React Native 0.82.1在 Xcode 26上构建失败,原因是Yoga、fmt、glog的 C++ constexpr错误

环境 React Native: 0.82.1 React: 19.1.1 Node: 20.19.6 CocoaPods: 最新版 Xcode: 26 macOS Tahoe 错误 构建在原生依赖项中失败,例如: Yoga fmt glog 一些主要错误包括: constexpr function never produces a constant expression call to consteval function ... is not a constant expression 以及来自以下文

在遍历非静态数据成员时,`template for` 不是constexpr

我在gcc 16.1中尝试新的C++26类型反射特性,并有一段用于将结构体/类转换为JSON的基础代码(见文末)。 我的代码: #include #include #include namespace __impl { template struct replicator_type { template constexpr void operator>>(F body) const { (body.t

C语言中的constexpr结构体与整型常量表达式

在阅读N3220草案标准中关于“6.6常量表达式”时,显然可以看出: constexpr struct { int i; } S = {.i = 100}; S.i是一个整数常量表达式。 但为什么在编译需要整数常量表达式的代码时,Clang会发出这个检查呢? int main(void) { int i = get_i(); switch(i) { case S.i: break; // warning: expression is not an integer constant expression;

字符串字面量,以及在C++23中的constexpr string msg = format(...)

我想在编译时使用format(...) 构造字符串字面量; 关于如何实现它,有些信息互相矛盾,我还做不到。 对于一个应用,我通常需要几个带有格式化的字符串字面量。 应 @Oersted的请求,我给出一个简要概括,说明我的需求。 通常的做法很简单,但属于“老派”,并且使用预处理器。我的问题是:“如何在字符串字面量中嵌入constexpr值,获得与旧式做法大致相同的灵活性”。欢迎任何“现代C++”的解决方案。 下面是更多说明,以及我在互联网上找到的一些消息,给出如何实现的代码,但示例我无法让GCC编译通过。