在现代 c++ 中使用 constexpr 修饰符面临典型的新手问题。
我是对的,即使在 c++17 中也无法编写这样的代码(原因http://www.boost.org/doc/libs/1_63_0/libs/hana/doc/html/index.html#tutorial-附录-constexpr)?
并且必须使用“值作为类型”习语(在本例中为打开和关闭文件使用不同的类型)?
#include <boost/hana/filter.hpp>
#include <boost/hana/tuple.hpp>
namespace hana = boost::hana;
enum class State {
Open, Closed
};
struct File {
constexpr File(State state) : state_(state) {}
constexpr State state() const { return state_; }
const State state_;
};
constexpr auto files = hana::make_tuple(File(State::Closed), File(State::Open));
constexpr auto filtered = hana::filter(files, [](const auto& file) {
return file.state() == State::Open;
});
int main() {
return 0;
}