digitalmars.D.learn - Error: func(const(A) a) is not callable using argument types (const(A)
- Andrew Edwards (27/27) May 30 2017 What does that even mean?
- Andrew Edwards (4/4) May 30 2017 Sorry, rough day. Could someone please explain what this means
- Nicholas Wilson (5/9) May 30 2017 If you want to resolve it just do
- Daniel Kozak via Digitalmars-d-learn (4/31) May 30 2017 It seems there are two different ImVec2 types. So ImVec2 is not same as ...
- Biotronic (10/39) May 30 2017 My immediate thought is 'is that the same ImVec2?' Do you have
- Daniel Kozak via Digitalmars-d-learn (3/48) May 30 2017 import std.traits : fqn = fullyQualifiedName;
- Biotronic (9/10) May 30 2017 Darnit. I just googled the template and got a result talking
- Andrew Edwards (8/18) May 30 2017 This is exactly the cause. Output is follows:
- Biotronic (11/34) May 30 2017 Pleasure. :)
- Daniel Kozak via Digitalmars-d-learn (4/45) May 30 2017 http://forum.dlang.org/post/xpmpakmusudanwuzzezl@forum.dlang.org
What does that even mean? Scenario: bool func(const ImVec2 label_size) { return true; } void main() { //first attempt: const ImVec2 label_size = CalcTextSize(label.ptr, null, true); //Error: cannot implicitly convert expression (CalcTextSize(cast(immutable(char)*)label, null, true, -1F)) of type ImVec2 to const(ImVec2) //second attempt const ImVec2 label_size = cast(const)CalcTextSize(label.ptr, null, true); // Error: cannot implicitly convert expression (CalcTextSize(cast(immutable(char)*)label, null, true, -1F)) of type const(ImVec2) to const(ImVec2) //third attempt const auto label_size = CalcTextSize(label.ptr, null, true); //Okay: don't know why the other two didn't work but I can keep going for now func(label_size); //Error: function imgui_d.func (const(ImVec2) label_size) is not callable using argument types (const(ImVec2)) }
May 30 2017
Sorry, rough day. Could someone please explain what this means and how do go about resolving it? Thanks, Andrew
May 30 2017
On Tuesday, 30 May 2017 at 10:20:53 UTC, Andrew Edwards wrote:Sorry, rough day. Could someone please explain what this means and how do go about resolving it? Thanks, AndrewIf you want to resolve it just do const label_size = CalcTextSize(...); but as others have mentioned make sure it is the right type (although if they are functionally identical it won't matter).
May 30 2017
It seems there are two different ImVec2 types. So ImVec2 is not same as ImVec2 :) On Tue, May 30, 2017 at 12:09 PM, Andrew Edwards via Digitalmars-d-learn < digitalmars-d-learn puremagic.com> wrote:What does that even mean? Scenario: bool func(const ImVec2 label_size) { return true; } void main() { //first attempt: const ImVec2 label_size = CalcTextSize(label.ptr, null, true); //Error: cannot implicitly convert expression (CalcTextSize(cast(immutable(char)*)label, null, true, -1F)) of type ImVec2 to const(ImVec2) //second attempt const ImVec2 label_size = cast(const)CalcTextSize(label.ptr, null, true); // Error: cannot implicitly convert expression (CalcTextSize(cast(immutable(char)*)label, null, true, -1F)) of type const(ImVec2) to const(ImVec2) //third attempt const auto label_size = CalcTextSize(label.ptr, null, true); //Okay: don't know why the other two didn't work but I can keep going for now func(label_size); //Error: function imgui_d.func (const(ImVec2) label_size) is not callable using argument types (const(ImVec2)) }
May 30 2017
On Tuesday, 30 May 2017 at 10:09:50 UTC, Andrew Edwards wrote:What does that even mean? Scenario: bool func(const ImVec2 label_size) { return true; } void main() { //first attempt: const ImVec2 label_size = CalcTextSize(label.ptr, null, true); //Error: cannot implicitly convert expression (CalcTextSize(cast(immutable(char)*)label, null, true, -1F)) of type ImVec2 to const(ImVec2) //second attempt const ImVec2 label_size = cast(const)CalcTextSize(label.ptr, null, true); // Error: cannot implicitly convert expression (CalcTextSize(cast(immutable(char)*)label, null, true, -1F)) of type const(ImVec2) to const(ImVec2) //third attempt const auto label_size = CalcTextSize(label.ptr, null, true); //Okay: don't know why the other two didn't work but I can keep going for now func(label_size); //Error: function imgui_d.func (const(ImVec2) label_size) is not callable using argument types (const(ImVec2)) }My immediate thought is 'is that the same ImVec2?' Do you have two definitions of ImVec2 laying about? What's the output of this code, if you insert it somewhere in the above? import std.traits; pragma(msg, fqn!ImVec2); pragma(msg, fqn!(typeof(CalcTextSize(label.ptr, null,true))));-- Biotronic
May 30 2017
import std.traits : fqn = fullyQualifiedName; On Tue, May 30, 2017 at 12:24 PM, Biotronic via Digitalmars-d-learn < digitalmars-d-learn puremagic.com> wrote:On Tuesday, 30 May 2017 at 10:09:50 UTC, Andrew Edwards wrote:What does that even mean? Scenario: bool func(const ImVec2 label_size) { return true; } void main() { //first attempt: const ImVec2 label_size = CalcTextSize(label.ptr, null, true); //Error: cannot implicitly convert expression (CalcTextSize(cast(immutable(char)*)label, null, true, -1F)) of type ImVec2 to const(ImVec2) //second attempt const ImVec2 label_size = cast(const)CalcTextSize(label.ptr, null, true); // Error: cannot implicitly convert expression (CalcTextSize(cast(immutable(char)*)label, null, true, -1F)) of type const(ImVec2) to const(ImVec2) //third attempt const auto label_size = CalcTextSize(label.ptr, null, true); //Okay: don't know why the other two didn't work but I can keep going for now func(label_size); //Error: function imgui_d.func (const(ImVec2) label_size) is not callable using argument types (const(ImVec2)) }My immediate thought is 'is that the same ImVec2?' Do you have two definitions of ImVec2 laying about? What's the output of this code, if you insert it somewhere in the above? import std.traits; pragma(msg, fqn!ImVec2); pragma(msg, fqn!(typeof(CalcTextSize(label.ptr, null,true))));-- Biotronic
May 30 2017
On Tuesday, 30 May 2017 at 10:31:24 UTC, Daniel Kozak wrote:import std.traits : fqn = fullyQualifiedName;Darnit. I just googled the template and got a result talking about fqn!T. So yeah - this code: import std.traits; pragma(msg, fullyQualifiedName!ImVec2); pragma(msg, fullyQualifiedName!(typeof(CalcTextSize(label.ptr, null, true)))); -- Biotronic
May 30 2017
On Tuesday, 30 May 2017 at 10:37:58 UTC, Biotronic wrote:On Tuesday, 30 May 2017 at 10:31:24 UTC, Daniel Kozak wrote:This is exactly the cause. Output is follows: internal.ImVec2 types.ImVec2 I'm leveraging types as I try to do my own port of the lib so CalcTextSize is returning an instance of ImVec2 as defined types and I'm trying to assign to one I have declared in internal. Thanks.import std.traits : fqn = fullyQualifiedName;Darnit. I just googled the template and got a result talking about fqn!T. So yeah - this code: import std.traits; pragma(msg, fullyQualifiedName!ImVec2); pragma(msg, fullyQualifiedName!(typeof(CalcTextSize(label.ptr, null, true)))); -- Biotronic
May 30 2017
On Tuesday, 30 May 2017 at 10:46:12 UTC, Andrew Edwards wrote:On Tuesday, 30 May 2017 at 10:37:58 UTC, Biotronic wrote:Pleasure. :) I don't know why you have two different ImVec2s, but you may have good reasons to. If they need to be separate, you'll need to write a conversion function between the two for the cases where you have one and want the other. This could be the constructor or opAssign, or a standalone function if you want to be more explicit about it. I'd argue that error message could be improved upon, btw. -- SimenOn Tuesday, 30 May 2017 at 10:31:24 UTC, Daniel Kozak wrote:This is exactly the cause. Output is follows: internal.ImVec2 types.ImVec2 I'm leveraging types as I try to do my own port of the lib so CalcTextSize is returning an instance of ImVec2 as defined types and I'm trying to assign to one I have declared in internal. Thanks.import std.traits : fqn = fullyQualifiedName;Darnit. I just googled the template and got a result talking about fqn!T. So yeah - this code: import std.traits; pragma(msg, fullyQualifiedName!ImVec2); pragma(msg, fullyQualifiedName!(typeof(CalcTextSize(label.ptr, null, true)))); -- Biotronic
May 30 2017
http://forum.dlang.org/post/xpmpakmusudanwuzzezl forum.dlang.org https://issues.dlang.org/show_bug.cgi?id=9631 On Tue, May 30, 2017 at 1:07 PM, Biotronic via Digitalmars-d-learn < digitalmars-d-learn puremagic.com> wrote:On Tuesday, 30 May 2017 at 10:46:12 UTC, Andrew Edwards wrote:On Tuesday, 30 May 2017 at 10:37:58 UTC, Biotronic wrote:Pleasure. :) I don't know why you have two different ImVec2s, but you may have good reasons to. If they need to be separate, you'll need to write a conversion function between the two for the cases where you have one and want the other. This could be the constructor or opAssign, or a standalone function if you want to be more explicit about it. I'd argue that error message could be improved upon, btw. -- SimenOn Tuesday, 30 May 2017 at 10:31:24 UTC, Daniel Kozak wrote:This is exactly the cause. Output is follows: internal.ImVec2 types.ImVec2 I'm leveraging types as I try to do my own port of the lib so CalcTextSize is returning an instance of ImVec2 as defined types and I'm trying to assign to one I have declared in internal. Thanks.import std.traits : fqn = fullyQualifiedName;Darnit. I just googled the template and got a result talking about fqn!T. So yeah - this code: import std.traits; pragma(msg, fullyQualifiedName!ImVec2); pragma(msg, fullyQualifiedName!(typeof(CalcTextSize(label.ptr, null, true)))); -- Biotronic
May 30 2017