September 22, 2005 Template linking bug. | ||||
|---|---|---|---|---|
| ||||
Hi,
With the following files:
test.hpp:
template <class Derived>
struct singleton {
static void instance() { static Derived the_inst; }
~singleton() {}
};
struct test : singleton<test>
{
};
test1.cpp:
#include "test.hpp"
void test1()
{
test::instance();
}
test2.cpp:
#include "test.hpp"
void test2()
{
test::instance();
}
When I compile them with:
dmc test1.cpp test2.cpp
I get this error:
Error 1: Previous Definition Different : ?the_inst@?1??instance@?$singleton@Utest@@@@SAXXZ (void cdecl singleton<test >::?1??instance::the_inst(void ))
This seems to be something to do with singleton's destructor. If I remove it, the example works fine.
Daniel
| ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply