Ich möchte eine Klasse, die als Vorlagenparameter verwendet wird, oder zumindest eine Konstruktionsvariable, die Adresse zu einem Datenelement einer Klasse. Ich werde später eine Instanz dieser Klasse bereitstellen, damit die Vorlagenklasse weiß, wo sie einen kleinen Aspekt der Beschwörung durchführen muss.
Das ist, was ich bisher habe, aber es lässt sich nicht kompilieren:
Code: Select all
#include
#include
struct B
{
int foo;
bool bar;
};
template
class A
{
public:
typedef std::function Callback;
A(Callback callback)
:
m_callback(callback)
{}
bool X
(
B& b
) const
{
if(m_callback(m_cache))
{
b.*M = m_cache;
return true;
}
return false;
}
protected:
Callback m_callback;
mutable decltype(*M) m_cache;
};
using A = FooA;
using A = BarA;
int main()
{
FooA fooA([](int& f) { std::cout