私は struct を持っていFoo
ます。Foo
さまざまなオブジェクトに渡された値のタプルから静的に選択するために、ある種の ID (プレースホルダー ?) を追加したいと思います。理想的には、他の場所で多くの変更をトリガーするため、テンプレート タイプにはしません。
整数を追加して constexpr 式を使用してみました (デモ)
#include <tuple>
using namespace std;
struct Foo {
private:
const int pl;
public:
constexpr Foo (int c) : pl(c) {}
constexpr int place() {return pl;}
template <typename... T>
constexpr int extract(std::tuple<T ...> const &vals) {
// I would like to uncomment the following but it fails compiling
// return std::get<pl>(vals);
return std::get<0>(vals);
}
};
int main(void) {
constexpr Foo f(1);
constexpr std::tuple<int, int> test = std::make_tuple(0, 10);
// The following passes
static_assert(f.place() == 1, "ERROR");
// The following fails
static_assert(f.extract(test) == 10, "ERROR");
}
で を使用できると思っていconstexpr place()
ましたがget<>
、何が欠けていますか?
テンプレートを使わない方法はありますか?