Код: Выделить всё
#pragma once
class Foo
{
public:
Foo();
template
int Method(Args&&... args);
private:
class Impl;
Impl* m_Impl;
};
< /code>
функциональный#include
#include "foo.h"
#include "impl.h"
Foo::Foo() :
m_Impl(new Foo::Impl())
{
}
template
int Foo::Method(Args&&... args)
{
return m_Impl->Method(std::forward(args)...);
}
< /code>
функциональный#pragma once
#include "foo.h"
class Foo::Impl
{
public:
int Method(int argc, char* argv[]);
};
< /code>
функциональный#include
#include "impl.h"
int Foo::Impl::Method(int argc, char* argv[])
{
for (int i = 0; i < argc; ++i)
std::cout
Подробнее здесь: [url]https://stackoverflow.com/questions/79723747/combining-pointer-to-implementation-pimpl-idiom-and-variadic-template-argument[/url]