digitalmars.D.learn - template instance does not match template declaration
- Fabrice Marie (25/25) Jan 07 2017 Hi,
- Nicholas Wilson (5/30) Jan 07 2017 By default template parameters are Types. lookupBasicObject is
- Meta (7/12) Jan 07 2017 In addition to what Nicholas Wilson said, what you're doing here
- Fabrice Marie (2/15) Jan 15 2017 Thanks a lot! exactly what I needed.
Hi,
On my first attempt to create a templated class, I'm hitting an
issue that I can't seem to resolve.
I've dustmite'd the code down to:
class Cache(O, K, F)
{
}
void main()
{
class BasicObject
{
}
BasicObject lookupBasicObject() {
}
Cache!(BasicObject, string, lookupBasicObject);
}
and I'm hitting the following error:
cache.d(23): Error: template instance Cache!(BasicObject, string,
lookupBasicObject) does not match template declaration Cache(O,
K, F)
Any help would be much appreciated in understanding what I am
doing wrong.
Thanks.
Take care,
Fabrice.
Jan 07 2017
On Sunday, 8 January 2017 at 03:27:26 UTC, Fabrice Marie wrote:
Hi,
On my first attempt to create a templated class, I'm hitting an
issue that I can't seem to resolve.
I've dustmite'd the code down to:
class Cache(O, K, F)
{
}
void main()
{
class BasicObject
{
}
BasicObject lookupBasicObject() {
}
Cache!(BasicObject, string, lookupBasicObject);
}
and I'm hitting the following error:
cache.d(23): Error: template instance Cache!(BasicObject,
string, lookupBasicObject) does not match template declaration
Cache(O, K, F)
Any help would be much appreciated in understanding what I am
doing wrong.
Thanks.
Take care,
Fabrice.
By default template parameters are Types. lookupBasicObject is
not.
change this `class Cache(O, K, F)` to `class Cache(O, K, alias F)`
and it should work.
Jan 07 2017
On Sunday, 8 January 2017 at 03:27:26 UTC, Fabrice Marie wrote:
void main()
{
....
Cache!(BasicObject, string, lookupBasicObject);
}
In addition to what Nicholas Wilson said, what you're doing here
is the equivalent of writing `int;`. It doesn't make any sense as
Cache!(...) is a type, and you are declaring a variable of that
type... except you're not providing a variable name so the syntax
is wrong. After you've fixed the other problem change it to this:
Cache!(BasicObject, string, lookupBasicObject) c;
Jan 07 2017
On Sunday, 8 January 2017 at 05:45:52 UTC, Meta wrote:On Sunday, 8 January 2017 at 03:27:26 UTC, Fabrice Marie wrote:Thanks a lot! exactly what I needed.void main() { .... Cache!(BasicObject, string, lookupBasicObject); }In addition to what Nicholas Wilson said, what you're doing here is the equivalent of writing `int;`. It doesn't make any sense as Cache!(...) is a type, and you are declaring a variable of that type... except you're not providing a variable name so the syntax is wrong. After you've fixed the other problem change it to this: Cache!(BasicObject, string, lookupBasicObject) c;
Jan 15 2017









Nicholas Wilson <iamthewilsonator hotmail.com> 