Jon*_*Mee 4 c++ bind functor constexpr c++11
所以说我想制作一些constexpr仿函数,虽然我可以使用它bind.有什么我想念的吗?为什么不能bind退货constexpr?
鉴于:
struct foo {
int b() const { return _b; }
int a() const { return _a; }
int r() const { return _r; }
const int _b;
const int _a;
const int _r;
};
Run Code Online (Sandbox Code Playgroud)
我想要:
constexpr auto sumB = bind(plus<int>(), placeholders::_1, bind(&foo::b, placeholders::_2));
constexpr auto sumA = bind(plus<int>(), placeholders::_1, bind(&foo::a, placeholders::_2));
constexpr auto sumR = bind(plus<int>(), placeholders::_1, bind(&foo::r, placeholders::_2));
Run Code Online (Sandbox Code Playgroud)
有什么我可以做的工作吗?
制作bindconstexpr 没有技术障碍; 例如,Sprout C++库具有constexpr启用的绑定.
但是,不允许实现将constexpr添加到标准中未指定的函数签名,并且还没有任何建议将constexpr添加到bind我所知道的内容中(C++ 14标准库的哪些部分可以是和哪些部分将成为constexpr?).一个人即将到来的可能性很小,因为bind它主要被 lambda表达式所取代,而对于C++ 17,它自动被constexpr:
constexpr auto sumB = [](int x, foo const& y) { return x + y.b(); };
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
323 次 |
| 最近记录: |