473,395 Members | 1,891 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,395 software developers and data experts.

Operators that cannot be Overloaded - WHY?

"The only operators that cannot be overloaded
are :: (scope resolution), . (member selection), and .* (member
selection through pointer to function). Quoting from Stroustrup's 3rd
edition of _The C++ Programming Language_, section 11.2 (page 263),
these three operators 'take a name, rather than a value, as their
second operand and provide the primary means of referring to members.
Allowing them to be overloaded would lead to subtleties.'"

First, I've seen ?: and sizeof added to this list. Someone also
mentioned 'delete' but Stroustrup doesn't refer to it as one. In fact,
it's in the list of overloadable operators.

Second, what is meant by 'take a name'? What is meant by 'subtleties'?
Any thoughts as to the detailed reasoning behind these?
Jul 22 '05 #1
20 37330
"Brad Eck" <br******@sitesdynamic.com> wrote...
"The only operators that cannot be overloaded
are :: (scope resolution), . (member selection), and .* (member
selection through pointer to function). Quoting from Stroustrup's 3rd
edition of _The C++ Programming Language_, section 11.2 (page 263),
these three operators 'take a name, rather than a value, as their
second operand and provide the primary means of referring to members.
Allowing them to be overloaded would lead to subtleties.'"

First, I've seen ?: and sizeof added to this list.
The ternary op is excluded probably due to complexity of its relation
to the assignment op. As to sizeof, ::, they're not really operators
in the true sense, I guess.
Someone also
mentioned 'delete' but Stroustrup doesn't refer to it as one. In fact,
it's in the list of overloadable operators.
'delete' can be overloaded. Whoever mentioned it probably didn't know
what he/she was talking about.
Second, what is meant by 'take a name'? What is meant by 'subtleties'?
Well, if you overload the . (member access) then the only way to access
a member would be (&obj)->member. Awkward. Now, if both '&' and -> are
overloaded, what do you get?...
Any thoughts as to the detailed reasoning behind these?


Detailed, 'fraid not. Try "Design and Evolution of C++". There is
a whole chapter on overloading.

V
Jul 22 '05 #2

"Brad Eck" <br******@sitesdynamic.com> wrote in message
news:5e*************************@posting.google.co m...
"The only operators that cannot be overloaded
are :: (scope resolution), . (member selection), and .* (member
selection through pointer to function). Quoting from Stroustrup's 3rd
edition of _The C++ Programming Language_, section 11.2 (page 263),
these three operators 'take a name, rather than a value, as their
second operand and provide the primary means of referring to members.
Allowing them to be overloaded would lead to subtleties.'"

First, I've seen ?: and sizeof added to this list. Someone also
mentioned 'delete' but Stroustrup doesn't refer to it as one. In fact,
it's in the list of overloadable operators.

Second, what is meant by 'take a name'? What is meant by 'subtleties'?
Any thoughts as to the detailed reasoning behind these?


Most normal operator take values, e.g. operator+ might add two integer
values. But the right hand side of operators . .* and :: are names of
things, e.g. name of a class member. Left hand side of :: is a name as well.
Difference between a name and a value seems pretty clear to me, and I guess
the subtleties would be the fact that nowhere else in C++ are you allow to
manipulate the names of class members, variables etc.

john
Jul 22 '05 #3
Victor Bazarov wrote:
'delete' can be overloaded. Whoever mentioned it probably didn't know
what he/she was talking about.


Delete CANNOT be loaded. It's just syntactic stupidity that makes the
deallocation function called "operator delete".
Jul 22 '05 #4
John Harrison wrote:
Most normal operator take values, e.g. operator+ might add two integer
values. But the right hand side of operators . .* and :: are names of
things, e.g. name of a class member.


operator-> works with a member on the rhs.
Jul 22 '05 #5

"Ron Natalie" <ro*@sensor.com> wrote in message
news:41***********************@news.newshosting.co m...
John Harrison wrote:
Most normal operator take values, e.g. operator+ might add two integer
values. But the right hand side of operators . .* and :: are names of
things, e.g. name of a class member.


operator-> works with a member on the rhs.


Use but in terms of how it is overloaded, operator-> is a unary operator
which returns a pointer, to which operator-> is reapplied.

Now Bjarne could have made it that operator. is overloaded as a unary
operator which returns a reference to which operator. is then reapplied. He
didn't and I don't know the reason but it seems like a reasonable decision
to me.

john
Jul 22 '05 #6
John Harrison wrote:
"Ron Natalie" <ro*@sensor.com> wrote in message
news:41***********************@news.newshosting.co m...
John Harrison wrote:

Most normal operator take values, e.g. operator+ might add two integer
values. But the right hand side of operators . .* and :: are names of
things, e.g. name of a class member.


operator-> works with a member on the rhs.

Use but in terms of how it is overloaded, operator-> is a unary operator
which returns a pointer, to which operator-> is reapplied.

Now Bjarne could have made it that operator. is overloaded as a unary
operator which returns a reference to which operator. is then reapplied. He
didn't and I don't know the reason but it seems like a reasonable decision
to me.


class SomeClass {};

class HasArrowOverloaded {
public:
SomeClass* operator->();
};

class HasDotOverloaded {
HasArrowOverloaded& operator &();
SomeClass& operator .(); // impossible in current C++, but
// let's pretend it's OK
void foo();
};

int main() {
HasDotOverloaded hdo;
// I want to call 'foo' for 'hdo'. How?
}

V
Jul 22 '05 #7
Ron Natalie wrote:
Victor Bazarov wrote:
'delete' can be overloaded. Whoever mentioned it probably didn't know
what he/she was talking about.

Delete CANNOT be loaded. It's just syntactic stupidity that makes the
deallocation function called "operator delete".


Whatever you call that ("syntactic stupidity" or "semantic brilliance")
you still can do

class RonDoesntLikeMeBooHoo {
public:
void operator delete(void*, size_t);
};

and when you say

RonDoesntLikeMeBooHoo *foo;
...
delete foo;

the _overloaded_ function will be called. And it has the word "operator"
in its name. If that means that it "CANNOT be loaded", then I'm the last
Chinese emperor.

V
Jul 22 '05 #8
Victor Bazarov wrote:
John Harrison wrote:
"Ron Natalie" <ro*@sensor.com> wrote in message
news:41***********************@news.newshosting.co m...
John Harrison wrote:
Most normal operator take values, e.g. operator+ might add two integer
values. But the right hand side of operators . .* and :: are names of
things, e.g. name of a class member.
operator-> works with a member on the rhs.


Use but in terms of how it is overloaded, operator-> is a unary operator
which returns a pointer, to which operator-> is reapplied.

Now Bjarne could have made it that operator. is overloaded as a unary
operator which returns a reference to which operator. is then
reapplied. He
didn't and I don't know the reason but it seems like a reasonable
decision
to me.

class SomeClass {};

class HasArrowOverloaded {
public:
SomeClass* operator->();
};

class HasDotOverloaded {
HasArrowOverloaded& operator &();
SomeClass& operator .(); // impossible in current C++, but
// let's pretend it's OK
void foo();
};

int main() {
HasDotOverloaded hdo;
// I want to call 'foo' for 'hdo'. How?
}

V

hdo.HasDotOverloaded::foo() ?

--
Regards,
Slava

Jul 22 '05 #9
Victor Bazarov posted:
Ron Natalie wrote:
Victor Bazarov wrote:
'delete' can be overloaded. Whoever mentioned it probably didn't know what he/she was talking about.

Delete CANNOT be loaded. It's just syntactic stupidity that makes the deallocation function called "operator delete".


Whatever you call that ("syntactic stupidity" or "semantic

brilliance") you still can do

class RonDoesntLikeMeBooHoo {
public:
void operator delete(void*, size_t);
};

and when you say

RonDoesntLikeMeBooHoo *foo;
...
delete foo;

the _overloaded_ function will be called. And it has the word "operator" in its name. If that means that it "CANNOT be loaded", then I'm the last Chinese emperor.

V

Now that's the kind of ridiculing debate I like to see!

Handbags at dawn, ladies!
-JKop
Jul 22 '05 #10
Vyacheslav Kononenko wrote:
Victor Bazarov wrote:
John Harrison wrote:
"Ron Natalie" <ro*@sensor.com> wrote in message
news:41***********************@news.newshosting.co m...

John Harrison wrote:
> Most normal operator take values, e.g. operator+ might add two integer
> values. But the right hand side of operators . .* and :: are names of
> things, e.g. name of a class member.

operator-> works with a member on the rhs.


Use but in terms of how it is overloaded, operator-> is a unary operator
which returns a pointer, to which operator-> is reapplied.

Now Bjarne could have made it that operator. is overloaded as a unary
operator which returns a reference to which operator. is then
reapplied. He
didn't and I don't know the reason but it seems like a reasonable
decision
to me.


class SomeClass {};

class HasArrowOverloaded {
public:
SomeClass* operator->();
};

class HasDotOverloaded {
HasArrowOverloaded& operator &();
SomeClass& operator .(); // impossible in current C++, but
// let's pretend it's OK
void foo();
};

int main() {
HasDotOverloaded hdo;
// I want to call 'foo' for 'hdo'. How?
}

V


hdo.HasDotOverloaded::foo() ?


If analogy with operator-> is considered, then the _right_ side of that
operator has no affect on the result.

Generally speaking, I don't know. Shouldn't it actually say "SomeClass
has no 'HasDotOverloaded' member" or something? But let's simply make
it a bit more interesting. Consider the to of the code above corrected
as following:

struct Base {
virtual void foo();
};

class SomeClass : public Base {
void foo();
};

Now, how sould compiler decide what to call if the syntax is

hdo.Base::foo(); // want to call Base::foo for SomeClass&

or

hdo.foo(); // which 'foo'?

See the problem? My post is not intended to spark a discussion that has
a goal to figure out how to overload operator dot correctly. I am just
trying to illustrate the problems that arise if such attempt is made.

V
Jul 22 '05 #11
Victor Bazarov wrote:
RonDoesntLikeMeBooHoo *foo;
...
delete foo;

the _overloaded_ function will be called. And it has the word "operator"
in its name. If that means that it "CANNOT be loaded", then I'm the last
Chinese emperor.


The overloaded fucntion gets called, but it isn't the implementation
of the delete operator. The delete operator does a lot of other stuff
(notably calling destructors) in addition to calling operator delete.
Jul 22 '05 #12
Victor Bazarov wrote:
If analogy with operator-> is considered, then the _right_ side of that
operator has no affect on the result.

By the way, I'm not arguing that operator. should be allowed to
be overloading, I was just pointing out someone's claim that the
fact that the rhs of the . operator was a member name was a reason
(and I pointed out the counterexample).

The main reason is that . would be too darn confusing if overloaded.
You gotta start from somewhere. Frankly, if it were up to me,
you wouldn't be able to overload unary & either.
Jul 22 '05 #13
Ron Natalie wrote:
Victor Bazarov wrote:
RonDoesntLikeMeBooHoo *foo;
...
delete foo;

the _overloaded_ function will be called. And it has the word "operator"
in its name. If that means that it "CANNOT be loaded", then I'm the last
Chinese emperor.


The overloaded fucntion gets called, but it isn't the implementation
of the delete operator. The delete operator does a lot of other stuff
(notably calling destructors) in addition to calling operator delete.


Yes, a good opportunity for a language lawyer to demonstrate the knowledge
of the difference between the delete operator and the operator delete,
isn't it? The memory allocation function ("operator delete") can be
overloaded. That's the point. Are you disputing that? I guess, not.
Jul 22 '05 #14

"Victor Bazarov" <v.********@comAcast.net> wrote in message news:11****************@newsread1.dllstx09.us.to.v erio.net...
[snip]
Yes, a good opportunity for a language lawyer to demonstrate the knowledge
of the difference between the delete operator and the operator delete,
isn't it?

[snip]

Is there any good description of the difference between the delete operator and the operator delete?

By the way, Google "delete operator" in www.parashift.com (Marshall Cline's C++ FAQs Lite) gives
http://www.google.com/search?hl=en&l...te+operator%22
-> "Your search - "delete operator" - did not match any documents"
--
Alex Vinokur
email: alex DOT vinokur AT gmail DOT com
http://mathforum.org/library/view/10978.html
http://sourceforge.net/users/alexvn

Jul 22 '05 #15
Alex Vinokur wrote:
"Victor Bazarov" <v.********@comAcast.net> wrote in message news:11****************@newsread1.dllstx09.us.to.v erio.net...
[snip]
Yes, a good opportunity for a language lawyer to demonstrate the knowledge
of the difference between the delete operator and the operator delete,
isn't it?


[snip]

Is there any good description of the difference between the delete operator and the operator delete?

By the way, Google "delete operator" in www.parashift.com (Marshall Cline's C++ FAQs Lite) gives
http://www.google.com/search?hl=en&l...te+operator%22
-> "Your search - "delete operator" - did not match any documents"


"Delete operator" is what is used when you delete a pointer in your code:

delete ptr;

"Operator delete" is the deallocation function that you can overload.

The main difference is that "delete operator" invokes (calls) the proper
destructor and then uses "operator delete" to free the memory.

Same thing with "new operator" and "operator new".

V
Jul 22 '05 #16

"Victor Bazarov" <v.********@comAcast.net> wrote in message news:gw****************@newsread1.dllstx09.us.to.v erio.net...
Alex Vinokur wrote:
"Victor Bazarov" <v.********@comAcast.net> wrote in message news:11****************@newsread1.dllstx09.us.to.v erio.net...
[snip]
Yes, a good opportunity for a language lawyer to demonstrate the knowledge
of the difference between the delete operator and the operator delete,
isn't it?


[snip]

Is there any good description of the difference between the delete operator and the operator delete?

By the way, Google "delete operator" in www.parashift.com (Marshall Cline's C++ FAQs Lite) gives
http://www.google.com/search?hl=en&l...te+operator%22
-> "Your search - "delete operator" - did not match any documents"


"Delete operator" is what is used when you delete a pointer in your code:

delete ptr;

"Operator delete" is the deallocation function that you can overload.

The main difference is that "delete operator" invokes (calls) the proper
destructor and then uses "operator delete" to free the memory.

Same thing with "new operator" and "operator new".

V


Here is description og file <new> from
Standard C++ Library Module Reference Guide from Rogue Wave web site:
http://www.roguewave.com/support/doc...ref/new-h.html

Is "new" here "new operator" or "operator new"?
Is "delete" here "delete operator" or "operator delete"?
--
Alex Vinokur
email: alex DOT vinokur AT gmail DOT com
http://mathforum.org/library/view/10978.html
http://sourceforge.net/users/alexvn

Jul 22 '05 #17
Alex Vinokur wrote:
"Victor Bazarov" <v.********@comAcast.net> wrote in message news:gw****************@newsread1.dllstx09.us.to.v erio.net...
Alex Vinokur wrote:
"Victor Bazarov" <v.********@comAcast.net> wrote in message news:11****************@newsread1.dllstx09.us.to.v erio.net...
[snip]
Yes, a good opportunity for a language lawyer to demonstrate the knowledge
of the difference between the delete operator and the operator delete,
isn't it?

[snip]

Is there any good description of the difference between the delete operator and the operator delete?

By the way, Google "delete operator" in www.parashift.com (Marshall Cline's C++ FAQs Lite) gives
http://www.google.com/search?hl=en&l...te+operator%22
-> "Your search - "delete operator" - did not match any documents"
"Delete operator" is what is used when you delete a pointer in your code:

delete ptr;

"Operator delete" is the deallocation function that you can overload.

The main difference is that "delete operator" invokes (calls) the proper
destructor and then uses "operator delete" to free the memory.

Same thing with "new operator" and "operator new".

V

Here is description og file <new> from
Standard C++ Library Module Reference Guide from Rogue Wave web site:
http://www.roguewave.com/support/doc...ref/new-h.html

Is "new" here "new operator" or "operator new"?


What do you think? What do you see there?

In the following code there are both, can you spot them and tell them
apart?

class Blah {
public:
void* operator new(size_t);
};

int main() {
Blah* blah = new Blah;
}

If not, the one in the class is "operator new" (doesn't it say so in
the actual function declaration?), the one in the 'main' is the "new
operator".
Is "delete" here "delete operator" or "operator delete"?


Well, what do you think?

OK, OK, any function declared using 'operator' and then some other symbol
or word, is the "operator X" function. "operator delete" (when you see
those words in that order in the code) is the deallocation function that
is allowed to be overloaded for custom types and globally. "operator new"
is the one declared in the <new> and one that you can overload in a class
or globally.

"New operator" is what is invoked by the "new expression".

V
Jul 22 '05 #18

"Victor Bazarov" <v.********@comAcast.net> wrote in message news:Zt****************@newsread1.dllstx09.us.to.v erio.net...
[snip]
class Blah {
public: -----------------------------------------
This is declaration of "operator new" void* operator new(size_t); ----------------------------------------- };
This is definition of "operator new"
void* Blah::operator new(size_t)
{
// stuff
}

If we don't define our "operator new" then default "operator new" is used?

int main() { --------------------------------------
This is calling the "new operator". Blah* blah = new Blah; --------------------------------------
Can we directly call "operator new"?
When is it worth doing that (instesd of calling the "new operator")?
}

If not, the one in the class is "operator new" (doesn't it say so in
the actual function declaration?), the one in the 'main' is the "new
operator".

[snip]
--
Alex Vinokur
email: alex DOT vinokur AT gmail DOT com
http://mathforum.org/library/view/10978.html
http://sourceforge.net/users/alexvn

Jul 22 '05 #19
Alex Vinokur wrote:
"Victor Bazarov" <v.********@comAcast.net> wrote in message news:Zt****************@newsread1.dllstx09.us.to.v erio.net...
[snip]
class Blah {
public:
-----------------------------------------
This is declaration of "operator new"
void* operator new(size_t);


-----------------------------------------
};

This is definition of "operator new"
void* Blah::operator new(size_t)
{
// stuff
}

If we don't define our "operator new" then default "operator new" is used?


Right.

int main() {
--------------------------------------
This is calling the "new operator".
Blah* blah = new Blah;


Basically. It's more appropriate to say "using new operator" instead of
"calling" it.

--------------------------------------
Can we directly call "operator new"?
We can.
When is it worth doing that (instesd of calling the "new operator")?


Probably never.

V
Jul 22 '05 #20

"Victor Bazarov" <v.********@comAcast.net> wrote in message news:tZ****************@newsread1.dllstx09.us.to.v erio.net...
Alex Vinokur wrote:
"Victor Bazarov" <v.********@comAcast.net> wrote in message news:Zt****************@newsread1.dllstx09.us.to.v erio.net...
[snip]
class Blah {
public:


-----------------------------------------
This is declaration of "operator new"
void* operator new(size_t);


-----------------------------------------
};

This is definition of "operator new"
void* Blah::operator new(size_t)
{
// stuff
}

If we don't define our "operator new" then default "operator new" is used?


Right.

int main() {


--------------------------------------
This is calling the "new operator".
Blah* blah = new Blah;


Basically. It's more appropriate to say "using new operator" instead of
"calling" it.

--------------------------------------
Can we directly call "operator new"?


We can.
When is it worth doing that (instesd of calling the "new operator")?


Probably never.

V


Here are some samples of using overloaded and original "operator new".

Done under impression by
http://www.icce.rug.nl/documents/cpl...lusplus09.html
(C++ Annotations Version 6.1.2 by Frank B. Brokken)

--------- C++ code : BEGIN ---------
// File foo.cpp
#include <iostream>
#include <cstring>
#include <cassert>
using namespace std;
struct Foo
{
int var1;
int var2;
void show ()
{
cout << "Values: var1 = " << var1 << ", var2 = " << var2 << endl;
}
Foo() {}
Foo (int var1_i, int var2_i) : var1 (var1_i), var2 (var2_i) {}
static void* operator new(size_t size_i);
static void* operator new(size_t size_i, int var1_i, int var2_i);
};

void* Foo::operator new(size_t size_i)
{
cout << __PRETTY_FUNCTION__ << "; size = " << size_i << endl;
void *ptr = new char[size_i];
return ptr;
}

void* Foo::operator new(size_t size_i, int var1_i, int var2_i)
{
cout << __PRETTY_FUNCTION__ << "; size = " << size_i << "; var1_i = " << var1_i << ", var2_i = " << var2_i << endl;
void *ptr = new char[size_i];
memcpy (ptr, (char*)&var1_i, sizeof var1_i);
memcpy ((char*)ptr + sizeof var1_i, (char*)&var2_i, sizeof var2_i);
return ptr;
}

int main()
{
Foo* foo1 = new Foo;
foo1->show();

cout << endl;
Foo* foo2 = new Foo();
foo2->show();

cout << endl;
Foo* foo3 = new Foo(100, 200);
foo3->show();

cout << endl;
Foo* foo4 = new(300, 400) Foo;
foo4->show();

cout << endl;
Foo* foo5 = new(500, 600) Foo ();
foo5->show();
cout << endl;
cout << endl;
Foo* foo6 = ::new Foo;
foo6->show();

cout << endl;
Foo* foo7 = ::new Foo();
foo7->show();

cout << endl;
Foo* foo8 = ::new Foo(700, 800);
foo8->show();

cout << endl;
Foo* foo9 = ::new Foo(900, 1000);
foo9->show();

// --------------------------------------------------------
// Using/calling 'new' as it shown below is not recommended
// --------------------------------------------------------

cout << endl;
cout << endl;
Foo* foo10 = (Foo*)Foo::operator new(sizeof (Foo));
foo10->show();

cout << endl;
Foo* foo11 = (Foo*)Foo::operator new(sizeof (Foo), 1100, 1200);
foo11->show();
return 0;
}

--------- C++ code : END -----------

--------- Compilation & Run : BEGIN ---------

$ g++ -v
[omitted]
gcc version 3.3.3 (cygwin special)
$ g++ foo.cpp
// No errors/warnings
$ a

static void* Foo::operator new(unsigned int); size = 8
Values: var1 = 1628570148, var2 = 1628570148

static void* Foo::operator new(unsigned int); size = 8
Values: var1 = 0, var2 = 0

static void* Foo::operator new(unsigned int); size = 8
Values: var1 = 100, var2 = 200

static void* Foo::operator new(unsigned int, int, int); size = 8; var1_i = 300, var2_i = 400
Values: var1 = 300, var2 = 400

static void* Foo::operator new(unsigned int, int, int); size = 8; var1_i = 500, var2_i = 600
Values: var1 = 500, var2 = 600
Values: var1 = 0, var2 = 0

Values: var1 = 0, var2 = 0

Values: var1 = 700, var2 = 800

Values: var1 = 900, var2 = 1000
static void* Foo::operator new(unsigned int); size = 8
Values: var1 = 0, var2 = 0

static void* Foo::operator new(unsigned int, int, int); size = 8; var1_i = 1100, var2_i = 1200
Values: var1 = 1100, var2 = 1200

--------- Compilation & Run : END -----------
--
Alex Vinokur
email: alex DOT vinokur AT gmail DOT com
http://mathforum.org/library/view/10978.html
http://sourceforge.net/users/alexvn

Jul 22 '05 #21

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

8
by: Nitin Bhardwaj | last post by:
Thanx in advance for the response... I wanna enquire ( as it is asked many a times in Interviews that i face as an Engg PostGraduate ) about the overloading capability of the C++ Language. ...
3
by: TJ | last post by:
Hi, I've been referring to many codes and books and always see that the stream insertion operators are overloaded as friends. Why is that? Are there any other overloading that need the same type...
4
by: Bangalore | last post by:
Hi, Can anybody explain , why some operators(::, ., .*, sizeof,?:) cannot be overloaded in C++? Thanks
44
by: bahadir.balban | last post by:
Hi, What's the best way to implement an overloaded function in C? For instance if you want to have generic print function for various structures, my implementation would be with a case...
7
by: Sacha Faust | last post by:
if you have a ready only properly like string.Length and I do --(string.Length) I get a compiler problem saying that I can't modify the value of the readonly property. From my understanding, the...
5
by: Suman | last post by:
Having had a look at the C++ FAQ, comp.lang.c++ & comp.std.c++ archives and Stroustrup's FAQs (particularly the following: <url:http://www.research.att.com/~bs/bs_faq2.html#overload-dot/>) I am...
4
by: moleskyca1 | last post by:
What operators cannot be virtual and why? I looked at FAQ and found nothing. I think there are operators that cannot be virtual, but I don't know why?
19
by: Jess | last post by:
Hello, After seeing some examples about operator overloading, I'm still a bit confused about the general syntax. The following is what I think, not sure whether it's correct. 1. For a unary...
5
by: puzzlecracker | last post by:
I don't recall whether operators, which are members of the class, are intherited in subclasses? thanks
2
by: velvizhi | last post by:
why the operators like scope resolution operator,conditional operator,size of operator cant be overloaded?
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.