473,883 Members | 1,688 Online
Bytes | Software Development & Data Engineering Community
+ Post

Home Posts Topics Members FAQ

template functions and "return type overloading"

I have the following code segment - which compiles fine. I'm just
worried I may get run time probs - because it looks like the functions
are being overloaded by the return types?. Is this Ok: ?

template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

template <class T1, class T2>
std::string getValue( T1 col, T2 row ) ;

template <class T1, class T2>
Table getValue( T1 col, T2 row ) ;

.... etc.

Jul 23 '05 #1
9 2735
Ann Huxtable wrote:
I have the following code segment - which compiles fine. I'm just
It shouldn't. You cannot overload functions on their return value only:

template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

int main()
{
int a = getValue(1, 2);
}

"ComeauTest .c", line 9: error: more than one instance of overloaded
function
"getValue" matches the argument list, the choices that match
are:
function template "getValue(T 1, T2)"
function template "getValue(T 1, T2)"
The argument types that you used are: (int, int)
int a = getValue(1, 2);

It will compile until you try to call one of the overloads.
worried I may get run time probs - because it looks like the functions
are being overloaded by the return types?. Is this Ok: ?
No.
template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

template <class T1, class T2>
std::string getValue( T1 col, T2 row ) ;

template <class T1, class T2>
Table getValue( T1 col, T2 row ) ;

... etc.


What are you trying to achieve?
Jonathan

Jul 23 '05 #2
> I have the following code segment - which compiles fine. I'm just
worried I may get run time probs - because it looks like the functions
are being overloaded by the return types?. Is this Ok: ?

template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

template <class T1, class T2>
std::string getValue( T1 col, T2 row ) ;

template <class T1, class T2>
Table getValue( T1 col, T2 row ) ;

... etc.


Hmm, I must say I am surprised that these declarations compile. But bear in
mind there are all but template declaration nevertheless. The compiler won't
issue any error until it has to instantiate the template, such as an
explicit template instantiation or a call to the function template:

template int getValue(int, int); // error
int a = getValue(1,2); // error

Regards,
Ben
Jul 23 '05 #3


Jonathan Mcdougall wrote:
Ann Huxtable wrote:
I have the following code segment - which compiles fine. I'm just

It shouldn't. You cannot overload functions on their return value only:

template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

int main()
{
int a = getValue(1, 2);
}

"ComeauTest .c", line 9: error: more than one instance of overloaded
function
"getValue" matches the argument list, the choices that match
are:
function template "getValue(T 1, T2)"
function template "getValue(T 1, T2)"
The argument types that you used are: (int, int)
int a = getValue(1, 2);

It will compile until you try to call one of the overloads.

worried I may get run time probs - because it looks like the functions
are being overloaded by the return types?. Is this Ok: ?

No.

template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

template <class T1, class T2>
std::string getValue( T1 col, T2 row ) ;

template <class T1, class T2>
Table getValue( T1 col, T2 row ) ;

... etc.

What are you trying to achieve?
Jonathan


I'm writing a "Table" class which mimics a table returned in an SQL
query. The only difference is that in my table, I want to be able to
nest tables within tables - so some columns will contain other table.

To answer your question regarding whT i'm trying to achieve, the
templated functions above are retriving the values stored in a cell. The
cell is currently implemented as a union (although I may change to the
Boost variant type at a later stage). The cell can store one of the
following types:

char*
int,
double
void * //To allow nesting
Cells are referenced by (row,col) where each of the parameters could
either be a string (name) or int (index). This permutated with the large
number of possible return variables will result in 4*4 = 16 functions
just to get a value, and then another 16 to set a value - and this is
not easily extensible if I need to store other variable types. Hence my
post.

If you have any ideas as to how to solve this problem, I'd be willing to
hear them. Tks

Jul 23 '05 #4
Ann Huxtable wrote:
Jonathan Mcdougall wrote:
Ann Huxtable wrote:
I have the following code segment - which compiles fine. I'm just


It shouldn't. You cannot overload functions on their return value only:
What are you trying to achieve?


I'm writing a "Table" class which mimics a table returned in an SQL
query. The only difference is that in my table, I want to be able to
nest tables within tables - so some columns will contain other table.

To answer your question regarding whT i'm trying to achieve, the
templated functions above are retriving the values stored in a cell. The
cell is currently implemented as a union (although I may change to the
Boost variant type at a later stage). The cell can store one of the
following types:

char*
int,
double
void * //To allow nesting
Cells are referenced by (row,col) where each of the parameters could
either be a string (name) or int (index). This permutated with the large
number of possible return variables will result in 4*4 = 16 functions
just to get a value, and then another 16 to set a value - and this is
not easily extensible if I need to store other variable types. Hence my
post.

If you have any ideas as to how to solve this problem, I'd be willing to
hear them. Tks


Include the return in the template list:

#include <string>
#include <sstream>

template <class Ret, class T1, class T2>
Ret getValue(T1 col, T2 row)
{
std::string value = get_value_from_ db_as_string(co l, row);

std::istringstr eam iss(value);
Ret r = Ret();

iss >> r;

return r;
}

int main()
{
int a = getValue<int>(1 0, 10);
double b = getValue<double >(11, 11);
Image c(getValue<Imag e>(12, 12)); // provided Image overloaded the
operator>>
}

If you cannot get the value as a string from the database, you'll have
to find another way. Come back if you didn't find any.
Jonathan

Jul 23 '05 #5


Jonathan Mcdougall wrote:
Ann Huxtable wrote:
Jonathan Mcdougall wrote:

Ann Huxtable wrote:
I have the following code segment - which compiles fine. I'm just

It shouldn't. You cannot overload functions on their return value only:
What are you trying to achieve?


I'm writing a "Table" class which mimics a table returned in an SQL
query. The only difference is that in my table, I want to be able to
nest tables within tables - so some columns will contain other table.

To answer your question regarding whT i'm trying to achieve, the
templated functions above are retriving the values stored in a cell. The
cell is currently implemented as a union (although I may change to the
Boost variant type at a later stage). The cell can store one of the
following types:

char*
int,
double
void * //To allow nesting
Cells are referenced by (row,col) where each of the parameters could
either be a string (name) or int (index). This permutated with the large
number of possible return variables will result in 4*4 = 16 functions
just to get a value, and then another 16 to set a value - and this is
not easily extensible if I need to store other variable types. Hence my
post.

If you have any ideas as to how to solve this problem, I'd be willing to
hear them. Tks

Include the return in the template list:

#include <string>
#include <sstream>

template <class Ret, class T1, class T2>
Ret getValue(T1 col, T2 row)
{
std::string value = get_value_from_ db_as_string(co l, row);

std::istringstr eam iss(value);
Ret r = Ret();

iss >> r;

return r;
}

int main()
{
int a = getValue<int>(1 0, 10);
double b = getValue<double >(11, 11);
Image c(getValue<Imag e>(12, 12)); // provided Image overloaded the
operator>>
}

If you cannot get the value as a string from the database, you'll have
to find another way. Come back if you didn't find any.
Jonathan


The database example I gave was just a conceptul illustration. I will
not necesarily be loading data from a db. I think the simplest
implementation would be to create templated functions (for each of the
data types supported - i.e. getString(), getLong(), getNestedTable( ) etc.

Thanks for your help nonetheless ..

Jul 23 '05 #6

"Ann Huxtable" <an*********@re search.de.edu> wrote in message
news:db******** **@nwrdmz01.dmz .ncs.ea.ibs-infra.bt.com...


Jonathan Mcdougall wrote:
Ann Huxtable wrote:
I have the following code segment - which compiles fine. I'm just

It shouldn't. You cannot overload functions on their return value only:

template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

int main()
{
int a = getValue(1, 2);
}

"ComeauTest .c", line 9: error: more than one instance of overloaded
function
"getValue" matches the argument list, the choices that match
are:
function template "getValue(T 1, T2)"
function template "getValue(T 1, T2)"
The argument types that you used are: (int, int)
int a = getValue(1, 2);

It will compile until you try to call one of the overloads.

worried I may get run time probs - because it looks like the functions
are being overloaded by the return types?. Is this Ok: ?

No.

template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

template <class T1, class T2>
std::string getValue( T1 col, T2 row ) ;

template <class T1, class T2>
Table getValue( T1 col, T2 row ) ;

... etc.

What are you trying to achieve?
Jonathan


I'm writing a "Table" class which mimics a table returned in an SQL
query. The only difference is that in my table, I want to be able to
nest tables within tables - so some columns will contain other table.

To answer your question regarding whT i'm trying to achieve, the
templated functions above are retriving the values stored in a cell. The
cell is currently implemented as a union (although I may change to the
Boost variant type at a later stage). The cell can store one of the
following types:

char*
int,
double
void * //To allow nesting
Cells are referenced by (row,col) where each of the parameters could
either be a string (name) or int (index). This permutated with the large
number of possible return variables will result in 4*4 = 16 functions
just to get a value, and then another 16 to set a value - and this is
not easily extensible if I need to store other variable types. Hence my
post.

If you have any ideas as to how to solve this problem, I'd be willing to
hear them. Tks


Now, what you described is indeed three problems: input types, output types,
and extensibility. Let's take them apart:

You are looking for int-int, int-string, string-int, string-string pairs as
input type and are looking for extensibility, if I correctly understand your
post. The ideal way is to use the C++ type system to help you. What's in my
mind is a single concept for locating a cell, say, cell_entry:

class cell_entry_base
{
protected:
cell_entry_base ();
// whatever you need to know to locate a cell
};

// map to col-row pair types
template <typename ColT, typename RowT>
class cell_entry;

// specialize for <int, int>
template <> class cell_entry<int, int>: public cell_entry_base
{
//...
};

// also specialize for <int, string>, <string, int> and <string, string>
//...

// also specialize for other types you wish, extending made easy...

Now the output type. You need to map a set of C++ type to the internal types
supported by the database, if I am still on the track. So I came up with
traits:

template <typename T>
class entry_type_trai t;

template <> class entry_type_trai t<char*>
{
public:
static char* get_value(cell_ entry_base&) throw (bad_type)
{
// your database access code here,
// throw bad_type if type not matched
}

//... more ops up to you
};

// also specialize for <int> <double> and <void*>
// ...

Note that you only have to add a new specialization to extend the type
mapping. And finally the function getValue can be trivially implemented:

template <typename ReturnT, typename ColT, typename RowT>
ReturnT getValue(ColT col, RowT row) throw (bad_type)
{
cell_entry<ColT , RowT> entry(col, row); // enforce input types
return entry_type_trai t<ReturnT>::get _value(entry); // output
types
}

Regards,
Ben
Jul 23 '05 #7


benben wrote:
"Ann Huxtable" <an*********@re search.de.edu> wrote in message
news:db******** **@nwrdmz01.dmz .ncs.ea.ibs-infra.bt.com...

Jonathan Mcdougall wrote:

Ann Huxtable wrote:
I have the following code segment - which compiles fine. I'm just
It shouldn't. You cannot overload functions on their return value only:

template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

int main()
{
int a = getValue(1, 2);
}

"ComeauTest. c", line 9: error: more than one instance of overloaded
function
"getValue" matches the argument list, the choices that match
are:
function template "getValue(T 1, T2)"
function template "getValue(T 1, T2)"
The argument types that you used are: (int, int)
int a = getValue(1, 2);

It will compile until you try to call one of the overloads.

worried I may get run time probs - because it looks like the functions
are being overloaded by the return types?. Is this Ok: ?
No.

template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

template <class T1, class T2>
std::stri ng getValue( T1 col, T2 row ) ;

template <class T1, class T2>
Table getValue( T1 col, T2 row ) ;

... etc.
What are you trying to achieve?
Jonathan


I'm writing a "Table" class which mimics a table returned in an SQL
query. The only difference is that in my table, I want to be able to
nest tables within tables - so some columns will contain other table.

To answer your question regarding whT i'm trying to achieve, the
templated functions above are retriving the values stored in a cell. The
cell is currently implemented as a union (although I may change to the
Boost variant type at a later stage). The cell can store one of the
following types:

char*
int,
double
void * //To allow nesting
Cells are referenced by (row,col) where each of the parameters could
either be a string (name) or int (index). This permutated with the large
number of possible return variables will result in 4*4 = 16 functions
just to get a value, and then another 16 to set a value - and this is
not easily extensible if I need to store other variable types. Hence my
post.

If you have any ideas as to how to solve this problem, I'd be willing to
hear them. Tks

Now, what you described is indeed three problems: input types, output types,
and extensibility. Let's take them apart:

You are looking for int-int, int-string, string-int, string-string pairs as
input type and are looking for extensibility, if I correctly understand your
post. The ideal way is to use the C++ type system to help you. What's in my
mind is a single concept for locating a cell, say, cell_entry:

class cell_entry_base
{
protected:
cell_entry_base ();
// whatever you need to know to locate a cell
};

// map to col-row pair types
template <typename ColT, typename RowT>
class cell_entry;

// specialize for <int, int>
template <> class cell_entry<int, int>: public cell_entry_base
{
//...
};

// also specialize for <int, string>, <string, int> and <string, string>
//...

// also specialize for other types you wish, extending made easy...

Now the output type. You need to map a set of C++ type to the internal types
supported by the database, if I am still on the track. So I came up with
traits:

template <typename T>
class entry_type_trai t;

template <> class entry_type_trai t<char*>
{
public:
static char* get_value(cell_ entry_base&) throw (bad_type)
{
// your database access code here,
// throw bad_type if type not matched
}

//... more ops up to you
};

// also specialize for <int> <double> and <void*>
// ...

Note that you only have to add a new specialization to extend the type
mapping. And finally the function getValue can be trivially implemented:

template <typename ReturnT, typename ColT, typename RowT>
ReturnT getValue(ColT col, RowT row) throw (bad_type)
{
cell_entry<ColT , RowT> entry(col, row); // enforce input types
return entry_type_trai t<ReturnT>::get _value(entry); // output
types
}

Regards,
Ben


Ok, this looks interesting, I'm re-reading your post to make sure I
understand it completely (BTW, I believe you are on the right track -
i.e. you *did understand the problem posed). If I encounter any probs
with your solution, I'll be right back. tks

Jul 23 '05 #8


Ann Huxtable wrote:


benben wrote:
"Ann Huxtable" <an*********@re search.de.edu> wrote in message
news:db******** **@nwrdmz01.dmz .ncs.ea.ibs-infra.bt.com...

Jonathan Mcdougall wrote:
Ann Huxtable wrote:
> I have the following code segment - which compiles fine. I'm just

It shouldn't. You cannot overload functions on their return value only:

template <class T1, class T2>
int getValue( T1 col, T2 row ) ;

template <class T1, class T2>
double getValue( T1 col, T2 row ) ;

int main()
{
int a = getValue(1, 2);
}

"ComeauTest .c", line 9: error: more than one instance of overloaded
function
"getValue" matches the argument list, the choices that match
are:
function template "getValue(T 1, T2)"
function template "getValue(T 1, T2)"
The argument types that you used are: (int, int)
int a = getValue(1, 2);

It will compile until you try to call one of the overloads.

> worried I may get run time probs - because it looks like the functions
> are being overloaded by the return types?. Is this Ok: ?

No.

> template <class T1, class T2>
> int getValue( T1 col, T2 row ) ;
>
> template <class T1, class T2>
> double getValue( T1 col, T2 row ) ;
>
> template <class T1, class T2>
> std::string getValue( T1 col, T2 row ) ;
>
> template <class T1, class T2>
> Table getValue( T1 col, T2 row ) ;
>
> ... etc.

What are you trying to achieve?
Jonathan
I'm writing a "Table" class which mimics a table returned in an SQL
query. The only difference is that in my table, I want to be able to
nest tables within tables - so some columns will contain other table.

To answer your question regarding whT i'm trying to achieve, the
templated functions above are retriving the values stored in a cell. The
cell is currently implemented as a union (although I may change to the
Boost variant type at a later stage). The cell can store one of the
following types:

char*
int,
double
void * //To allow nesting
Cells are referenced by (row,col) where each of the parameters could
either be a string (name) or int (index). This permutated with the large
number of possible return variables will result in 4*4 = 16 functions
just to get a value, and then another 16 to set a value - and this is
not easily extensible if I need to store other variable types. Hence my
post.

If you have any ideas as to how to solve this problem, I'd be willing to
hear them. Tks

Now, what you described is indeed three problems: input types, output
types,
and extensibility. Let's take them apart:

You are looking for int-int, int-string, string-int, string-string
pairs as
input type and are looking for extensibility, if I correctly
understand your
post. The ideal way is to use the C++ type system to help you. What's
in my
mind is a single concept for locating a cell, say, cell_entry:

class cell_entry_base
{
protected:
cell_entry_base ();
// whatever you need to know to locate a cell
};

// map to col-row pair types
template <typename ColT, typename RowT>
class cell_entry;

// specialize for <int, int>
template <> class cell_entry<int, int>: public cell_entry_base
{
//...
};

// also specialize for <int, string>, <string, int> and <string,
string>
//...

// also specialize for other types you wish, extending made easy...

Now the output type. You need to map a set of C++ type to the internal
types
supported by the database, if I am still on the track. So I came up with
traits:

template <typename T>
class entry_type_trai t;

template <> class entry_type_trai t<char*>
{
public:
static char* get_value(cell_ entry_base&) throw (bad_type)
{
// your database access code here,
// throw bad_type if type not matched
}

//... more ops up to you
};

// also specialize for <int> <double> and <void*>
// ...

Note that you only have to add a new specialization to extend the type
mapping. And finally the function getValue can be trivially implemented:

template <typename ReturnT, typename ColT, typename RowT>
ReturnT getValue(ColT col, RowT row) throw (bad_type)
{
cell_entry<ColT , RowT> entry(col, row); // enforce input
types
return entry_type_trai t<ReturnT>::get _value(entry); // output
types
}

Regards,
Ben


Ok, this looks interesting, I'm re-reading your post to make sure I
understand it completely (BTW, I believe you are on the right track -
i.e. you *did understand the problem posed). If I encounter any probs
with your solution, I'll be right back. tks


This is quite an elegant approach (albeit a bit confusing - to me
atleast). You may hev been also led slight astray by the special case of
loading data from a database into this memory table - however, the
proposed implimentation is still apropriate nonetheless.

Would you care to elaborate exactly what the base class cell_entry_base
does (you noted: // whatever you need to know to locate a cell). I'd
also be grateful if you add a little more flesh (or at least comments to
the template specializations for class cell_entry). It is likely that I
may have to come back to you several times during my implementation - I
hope you don't mind :-) (please indicate if you are too busy to assist
- though, in which case I'll keep it simple and use my less elegant
method - but I really like this more compact approach...)

Jul 23 '05 #9
> This is quite an elegant approach (albeit a bit confusing - to me
atleast). You may hev been also led slight astray by the special case of
loading data from a database into this memory table - however, the
proposed implimentation is still apropriate nonetheless.

Would you care to elaborate exactly what the base class cell_entry_base
does (you noted: // whatever you need to know to locate a cell). I'd
also be grateful if you add a little more flesh (or at least comments to
the template specializations for class cell_entry). It is likely that I
may have to come back to you several times during my implementation - I
hope you don't mind :-) (please indicate if you are too busy to assist
- though, in which case I'll keep it simple and use my less elegant
method - but I really like this more compact approach...)


I am glad I have been a littel helpful.

The class cell_entry_base is designed to consist any data or operation that
is necessary to locate a cell in your database. This is highly
implementation dependent--how it is implemented is directly related to the
database you are using. In situations where multi-connection, multi-table
database are concerned, you probably have to elaborate the class even a
little further.

That said, if your database can always use an int-int pair to locate a cell
directly, cell_entry_base is quite triviall:

class cell_entry_base
{
public:
int col;
int row;

// ...
};
Regards,
Ben
Jul 23 '05 #10

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

Similar topics

12
2636
by: zealotcat | last post by:
template <class T> inline T const& max (T const& a, T const& b) { // if a < b then use b else use a return a<b?b:a; } thanks very much!!
1
1865
by: Mat DeLong | last post by:
Can someone explain this error to me? : main.cpp:9: instantiated from `void show(const LIST::List<T>&) ' main.cpp:23: instantiated from here list.cpp:58: error: dependent-name `LIST::List<T>::ListIterator' is parsed as a non-type, but instantiation yields a type .......... This is the first part of the main:
32
8922
by: Mike Machuidel | last post by:
Hi, I'm a game developer programming mostly in C and ASM for about 7 years. Today at work a colleague (a C++ programmer) yelled at me I'm a bad C programmer because I use "return(0);" instead of "return 0;". He explained that "return" is not a function but a stament, like I didn't know already. The other colleagues also argreed with him :(. Can someone please explain what's so wrong about using "return" with
10
2625
by: LaEisem | last post by:
On-the-job, I have "inherited" a lot of old C language software. A question or two about when "casting" of null pointer constants is needed has occurred during behind-the-scenes cleanup of some of that software. That subject seems not to be addressed, at least not directly, in the C FAQ where FAQ 5.2 seems most relevant. References: * C FAQ 5.2 Null pointers (Including conditions where "casting" of null pointer...
15
6741
by: Greenhorn | last post by:
Hi, when a function doesn't specify a return type ,value what value is returned. In the below programme, the function sample()is returning the value passed to 'k'. sample(int); main() { int i = 0,j; j = sample(0);
4
1322
by: yaru22 | last post by:
In one of the examples in the book I'm reading, it says: def __init__(self): ... ... ... return It has nothing after "return". I expected it to have some number like 0 or 1.
20
1667
by: Andreas Griesmayer | last post by:
Hi, following piece of code causes a strange behavior when compiled with GCC (Linux, Gentoo 3.3.5.20050130-r1). read() is called twice although only called once, the first time before the first statement of main ! I guess there is some call to another read-function my function is wrongly linkted to, it works fine if read() is renamed or static. Compilation does not produce any warnings. Can anyone explain this behavior to me or...
24
2089
by: carnold | last post by:
Hello, I'm a developer coming from C++ and Java ... I've going thru "Effective C#" (which highly recommend for people coming from other languages wanting to learn C#), and it states that "value types" are always created on the stack, but then showed the "creation" of one w/ operator new. I guess it makes sense, but is it true that: MyValueType t;
9
4421
by: Steve | last post by:
Hi; I've being going through some legacy code on an old JSP site I have been patching. I noticed that when I save the JSP down to my PC as an HTML file I get this javascript error in IE 6 ( not in the latest Firefox ): "invalid character" The problem traces back to this line of code:
0
9792
by: Hystou | last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can effortlessly switch the default language on Windows 10 without reinstalling. I'll walk you through it. First, let's disable language synchronization. With a Microsoft account, language settings sync across devices. To prevent any complications,...
0
11142
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, it seems that the internal comparison operator "<=>" tries to promote arguments from unsigned to signed. This is as boiled down as I can make it. Here is my compilation command: g++-12 -std=c++20 -Wnarrowing bit_field.cpp Here is the code in...
0
10743
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 tapestry of website design and digital marketing. It's not merely about having a website; it's about crafting an immersive digital experience that captivates audiences and drives business growth. The Art of Business Website Design Your website is...
0
10416
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 protocol has its own unique characteristics and advantages, but as a user who is planning to build a smart home system, I am a bit confused by the choice of these technologies. I'm particularly interested in Zigbee because I've heard it does some...
0
9574
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, and deployment—without human intervention. Imagine an AI that can take a project description, break it down, write the code, debug it, and then launch it, all on its own.... Now, this would greatly impact the work of software developers. The idea...
1
7971
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new presenter, Adolph Dupré who will be discussing some powerful techniques for using class modules. He will explain when you may want to use classes instead of User Defined Types (UDT). For example, to manage the data in unbound forms. Adolph will...
0
5797
by: TSSRALBI | last post by:
Hello I'm a network technician in training and I need your help. I am currently learning how to create and manage the different types of VPNs and I have a question about LAN-to-LAN VPNs. The last exercise I practiced was to create a LAN-to-LAN VPN between two Pfsense firewalls, by using IPSEC protocols. I succeeded, with both firewalls in the same network. But I'm wondering if it's possible to do the same thing, with 2 Pfsense firewalls...
1
4612
by: 6302768590 | last post by:
Hai team i want code for transfer the data from one system to another through IP address by using C# our system has to for every 5mins then we have to update the data what the data is updated we have to send another system
3
3233
bsmnconsultancy
by: bsmnconsultancy | last post by:
In today's digital era, a well-designed website is crucial for businesses looking to succeed. Whether you're a small business owner or a large corporation in Toronto, having a strong online presence can significantly impact your brand's success. BSMN Consultancy, a leader in Website Development in Toronto offers valuable insights into creating effective websites that not only look great but also perform exceptionally well. In this comprehensive...

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.