小编Chr*_*s_F的帖子

你能用折叠表达式实现 fn(x1 ^ fn(x0)) 吗?

是否可以使用折叠表达式来实现以下目的?

template<class... Args>
auto foo(Args... args)
{
    //calling foo(x0, x1, x2) should be exactly equivalent to
    //calling fn(x2 ^ fn(x1 ^ fn(x0)))
}
Run Code Online (Sandbox Code Playgroud)

c++ templates variadic-templates fold-expression c++17

2
推荐指数
1
解决办法
130
查看次数

我怎样才能优化这个简单的功能?

可以说我有以下内容:

template <class T>
std::string to_string(const T& item)
{
    std::ostringstream ss;
    ss << item;
    return ss.str();
}
Run Code Online (Sandbox Code Playgroud)

是否有可能to_string在给定a的情况下创建一个重载,std::string只是转发参数而没有任何开销?

c++ templates c++11

1
推荐指数
2
解决办法
117
查看次数

Lua实施什么牌子的协程?

谁能具体告诉我协程Lua的“味道”是什么?我问是因为Lua的协程似乎非常适合我的问题,我希望能够在各个点(可能在嵌套函数调用内)暂停函数,然后再恢复它。尽管具有类似“协程/生成器”的构造,但在C#或JavaScript中这似乎是不可能的。还有哪些其他语言支持这些类型的协程?

lua coroutine

1
推荐指数
1
解决办法
48
查看次数

为什么这需要表达式作为一个概念而不是直接作用于函数?

以下无法编译。

template <typename... U>
requires requires(U... x) { (std::to_string(x) && ...); }
auto to_string(const std::variant<U...>& value) {
    return std::visit([](auto&& value) {
        return std::to_string(std::forward<decltype(value)>(value));
    }, value);
}

int main() {
    std::variant<int, float> v = 42;
    std::cout << to_string(v) << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

https://godbolt.org/z/Wvn6E3PG5

如果我将直接的 require 表达式转换为一个概念,它就可以正常工作。

template<typename T, typename... U>
concept to_stringable = requires(U... u) { (std::to_string(u) && ...); };

template <to_stringable... U>
auto to_string(const std::variant<U...>& value) {
    return std::visit([](auto&& value) {
        return std::to_string(std::forward<decltype(value)>(value));
    }, value);
}

int main() {
    std::variant<int, float> …
Run Code Online (Sandbox Code Playgroud)

c++ c++-concepts c++20 requires-expression

1
推荐指数
1
解决办法
106
查看次数

为什么文字的基础会影响其类型?

十进制数4294967295等于十六进制0xFFFFFFFF,所以我希望文字具有相同的类型,无论它表达的是什么基础,

std::is_same<decltype(0xFFFFFFFF), decltype(4294967295)>::value; //evaluates false
Run Code Online (Sandbox Code Playgroud)

似乎在我的编译器decltype(0xFFFFFFFF)unsigned int,decltype(4294967295)signed long.

c++ integer literals

0
推荐指数
1
解决办法
49
查看次数