Bug 7933 – Illegal interaction of templates

Status
RESOLVED
Resolution
FIXED
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86_64
OS
Linux
Creation time
2012-04-17T10:01:00Z
Last change time
2012-04-18T13:06:46Z
Keywords
pull, rejects-valid
Assigned to
nobody
Creator
maximzms

Comments

Comment #0 by maximzms — 2012-04-17T10:01:53Z
Compiler version: DMD64 D Compiler v2.058 on 64-bit Linux The following code causes compiler errors: ---------- struct Boo(size_t dim){int a;} struct Baa(size_t dim){Boo!dim a;} //struct Baa(size_t dim){Boo!1 a;} //(1) This version causes no errors auto foo()(Boo!1 b){return b;} //auto fuu(Boo!1 b){return b;} //(2) This line neutralizes the error void main() { Baa!1 a; //(3) This line causes the error message Baa!2 a1; auto b = foo(Boo!1(1)); } ---------- Error messages: ---------- test.d(12): Error: template test.foo() does not match any function template declaration test.d(12): Error: template test.foo() cannot deduce template function from argument types !()(Boo!(1LU)) ---------- These errors occure only if there is line markes as (3). If the definition of `Baa` is changed with the one marked as (1) there is no errors. If there is line marked as (2) there is no errors (even though the function `fuu` is not used anywhere).
Comment #1 by k.hara.pg — 2012-04-17T19:41:27Z
Comment #2 by github-bugzilla — 2012-04-18T12:00:50Z
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/ec4041f49357544c1cb5406baf678efcaccae5bf fix Issue 7933 - Illegal interaction of templates https://github.com/D-Programming-Language/dmd/commit/6131069d0edb21ecf8eda55e088ab5c4b17a91aa Merge pull request #887 from 9rnsr/fix7933 Issue 7933 - Illegal interaction of templates