LINUX.ORG.RU

Раскрыть parameter pack в конструкторе

 ,


0

2

Как раскрыть parameter pack в statement-ы, без специализации (в конструкторе, например)?

class A {
public:
	template <typename... Args>
	A(Args&... args) {
		(args.value = 3)...; // ???
		// arg1.value = 3;
		// arg2.value = 3;
		// arg3.value = 3;
		// ...
	}
	
};

Придумал такое, но как-то уж слишком костыльно, даже для c++:

class A {
public:
	
	template <typename T>
	int set(T& x) {
		x.value = 3;
		return 0;
	}
	
	template <typename... Args>
	void foo(Args... args) {}
	
	template <typename... Args>
	A(Args&... args) {
		foo(set(args)...);
	}
	
};
★★★

Последнее исправление: Kuzy (всего исправлений: 2)

wow

such c++

class A {
public:
	template <typename... Args>
	void foo(Args... args) {}
	
	template <typename... Args>
	A(Args&... args) {
		foo((args.value = 3)...);
	}
	
};
Kuzy ★★★
() автор топика

Вместо foo можно использовать std::make_tuple((args.value = 3)...);

const86 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.