Hello,
I have written a little library which consists of template functions and
classes (99%) and two non-template classes. I'd appreciate very much if I
could use the library by only including some header files without having to
deal with building and linking a library or object files. Are there any
tricks how this can be achieved?
I guess not, but perhaps you know better.
Best regards,
alex 10 1470
Alexander Stippler wrote in news:41******@news.uni-ulm.de in
comp.lang.c++: Hello,
I have written a little library which consists of template functions and classes (99%) and two non-template classes. I'd appreciate very much if I could use the library by only including some header files without having to deal with building and linking a library or object files. Are there any tricks how this can be achieved? I guess not, but perhaps you know better.
Instead of
class non_template
{
// whatever
};
Do:
template < typename = void >
class for_non_template
{
// Whatever (as above).
};
typedef for_non_template<> non_template;
HTH.
Rob.
-- http://www.victim-prime.dsl.pipex.com/
Rob Williscroft wrote: Alexander Stippler wrote in news:41******@news.uni-ulm.de in comp.lang.c++:
Hello,
I have written a little library which consists of template functions and classes (99%) and two non-template classes. I'd appreciate very much if I could use the library by only including some header files without having to deal with building and linking a library or object files. Are there any tricks how this can be achieved? I guess not, but perhaps you know better.
Instead of
class non_template { // whatever };
Do:
template < typename = void > class for_non_template { // Whatever (as above). };
typedef for_non_template<> non_template;
what does it mean if you use the typename keyword in a template parameter
declaration?
Thanks,
David
David Lindauer wrote in news:41***************@bluegrass.net in
comp.lang.c++: what does it mean if you use the typename keyword in a template parameter declaration?
Its exactly the same as when you use class.
Rob.
-- http://www.victim-prime.dsl.pipex.com/
Rob Williscroft wrote: Alexander Stippler wrote in news:41******@news.uni-ulm.de in comp.lang.c++:
Hello,
I have written a little library which consists of template functions and classes (99%) and two non-template classes. I'd appreciate very much if I could use the library by only including some header files without having to deal with building and linking a library or object files. Are there any tricks how this can be achieved? I guess not, but perhaps you know better.
Instead of
class non_template { // whatever };
Do:
template < typename = void > class for_non_template { // Whatever (as above). };
typedef for_non_template<> non_template;
HTH.
Rob.
That works fine for whole classes, but what about simple objects. I have
only one global variable, which I do not want to give any dummy template
parameter. Just an instantiation of a non-template class. It's only this one
object which forces the creation of a library. Any workaround?
regards,
alex
Alexander Stippler wrote: /snip/
... I have only one global variable, which I do not want to give any dummy template parameter. Just an instantiation of a non-template class. It's only this one object which forces the creation of a library. Any workaround?
Well, you could declare your global variable "extern" in the header and
demand that the *user* of the library define it somewhere.
Regards,
--
Lionel B
Alexander Stippler wrote in news:41******@news.uni-ulm.de in
comp.lang.c++: Rob Williscroft wrote:
Alexander Stippler wrote in news:41******@news.uni-ulm.de in comp.lang.c++:
Hello,
I have written a little library which consists of template functions and classes (99%) and two non-template classes. I'd appreciate very much if I could use the library by only including some header files without having to deal with building and linking a library or object files. Are there any tricks how this can be achieved? I guess not, but perhaps you know better.
Instead of
class non_template { // whatever };
Do:
template < typename = void > class for_non_template { // Whatever (as above). };
typedef for_non_template<> non_template;
HTH.
Rob.
That works fine for whole classes, but what about simple objects. I have only one global variable, which I do not want to give any dummy template parameter. Just an instantiation of a non-template class. It's only this one object which forces the creation of a library. Any workaround?
inline non_template &object()
{
static non_template obj = non_template();
return obj;
}
Rob.
-- http://www.victim-prime.dsl.pipex.com/
Rob Williscroft wrote: Alexander Stippler wrote in news:41******@news.uni-ulm.de in comp.lang.c++:
Rob Williscroft wrote:
Alexander Stippler wrote in news:41******@news.uni-ulm.de in comp.lang.c++:
Hello,
I have written a little library which consists of template functions and classes (99%) and two non-template classes. I'd appreciate very much if I could use the library by only including some header files without having to deal with building and linking a library or object files. Are there any tricks how this can be achieved? I guess not, but perhaps you know better.
Instead of
class non_template { // whatever };
Do:
template < typename = void > class for_non_template { // Whatever (as above). };
typedef for_non_template<> non_template;
HTH.
Rob.
That works fine for whole classes, but what about simple objects. I have only one global variable, which I do not want to give any dummy template parameter. Just an instantiation of a non-template class. It's only this one object which forces the creation of a library. Any workaround?
inline non_template &object() { static non_template obj = non_template(); return obj; }
Rob.
Works in general. But this way I have a function call, not direct access. In
my special situation direct access to the variable is necessary. It is
called '_' and I want to use it for function arguments in special
situations, like A( _ , 1 ) and not A( _(), 1). Thus your solution does not
work for me. I'm afraid, IMO there is no solution.
regards,
alex
Alexander Stippler <st**@mathematik.uni-ulm.de> wrote in message news:<41******@news.uni-ulm.de>... Rob Williscroft wrote:
Alexander Stippler wrote in news:41******@news.uni-ulm.de in comp.lang.c++:
Rob Williscroft wrote:
Alexander Stippler wrote in news:41******@news.uni-ulm.de in comp.lang.c++:
> Hello, > > I have written a little library which consists of template functions > and classes (99%) and two non-template classes. I'd appreciate very > much if I could use the library by only including some header files > without having to deal with building and linking a library or object > files. Are there any tricks how this can be achieved? > I guess not, but perhaps you know better.
/snip/
I have only one global variable, which I do not want to give any dummy template parameter. Just an instantiation of a non-template class. It's only this one object which forces the creation of a library. Any workaround?
inline non_template &object() { static non_template obj = non_template(); return obj; }
Rob.
That's neat :)
Works in general. But this way I have a function call, not direct access. In my special situation direct access to the variable is necessary. It is called '_' and I want to use it for function arguments in special situations, like A( _ , 1 ) and not A( _(), 1). Thus your solution does not work for me. I'm afraid, IMO there is no solution.
What exactly is the problem with declaring your object "extern"?
Regards,
--
Lionel B
Lionel B wrote: Alexander Stippler <st**@mathematik.uni-ulm.de> wrote in message news:<41******@news.uni-ulm.de>... Rob Williscroft wrote:
> Alexander Stippler wrote in news:41******@news.uni-ulm.de in > comp.lang.c++: > >> Rob Williscroft wrote: >> >>> Alexander Stippler wrote in news:41******@news.uni-ulm.de in >>> comp.lang.c++: >>> >>>> Hello, >>>> >>>> I have written a little library which consists of template functions >>>> and classes (99%) and two non-template classes. I'd appreciate very >>>> much if I could use the library by only including some header files >>>> without having to deal with building and linking a library or object >>>> files. Are there any tricks how this can be achieved? >>>> I guess not, but perhaps you know better. /snip/ >> I have only one global variable, which I do not want to give any dummy >> template parameter. Just an instantiation of a non-template class. >> It's only this one object which forces the creation of a library. Any >> workaround? >> > > inline non_template &object() > { > static non_template obj = non_template(); > return obj; > } > > > Rob.
That's neat :)
Works in general. But this way I have a function call, not direct access. In my special situation direct access to the variable is necessary. It is called '_' and I want to use it for function arguments in special situations, like A( _ , 1 ) and not A( _(), 1). Thus your solution does not work for me. I'm afraid, IMO there is no solution.
What exactly is the problem with declaring your object "extern"?
Regards,
We want to achieve the most simple way of usage for our library since users
are students with very poor knowledge of C++ and software development at
all. They shall do numerical exercises with it (and have already done
successfully one semester).
Declaring '_' as extern would require the user to define it somewhere. On
the other hand this tiny little '_' object is a really nice piece of
syntactic sugar, we do not want to miss anymore. But it's also the one
single piece of code which prevents us from having the whole library to be
used by including headers only.
regards,
alex
Alexander Stippler <st**@mathematik.uni-ulm.de> wrote in message news:<41******@news.uni-ulm.de>... Lionel B wrote: Alexander Stippler <st**@mathematik.uni-ulm.de> wrote in message news:<41******@news.uni-ulm.de>...
/snip/ >> I have only one global variable, which I do not want to give any dummy >> template parameter. Just an instantiation of a non-template class. >> It's only this one object which forces the creation of a library. Any >> workaround?
/snip/
In my special situation direct access to the variable is necessary. It is called '_' and I want to use it for function arguments in special situations, like A( _ , 1 ) and not A( _(), 1). Thus your solution does not work for me. I'm afraid, IMO there is no solution. What exactly is the problem with declaring your object "extern"? We want to achieve the most simple way of usage for our library since users are students with very poor knowledge of C++ and software development at all. They shall do numerical exercises with it (and have already done successfully one semester).
Fair enough.
Declaring '_' as extern would require the user to define it somewhere. On the other hand this tiny little '_' object is a really nice piece of syntactic sugar, we do not want to miss anymore. But it's also the one single piece of code which prevents us from having the whole library to be used by including headers only.
I have to confess that having a variable called '_' sounds to me like
a recipe for generating fabulously opaque compiler errors (especially
for "students with very poor knowledge of C++" ...?).
That said, surely even the most computer-illiterate student could be
persuaded to copy-and-paste the line:
underscore_object_type _;
into a source file? Perhaps they might be enticed with:
#define MY_TEACHER_TOLD_ME_TO_PUT_THIS_HERE underscore_object_type _;
;)
--
Lionel B This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Ville Vainio |
last post by:
Pythonic Nirvana - towards a true Object Oriented Environment
=============================================================
IPython (by Francois Pinard) recently (next release - changes are...
|
by: Des Perado |
last post by:
We have an elderly DOS-based system running on a Novell Netware server here,
and an extensive intranet. Quite recently the board decided that some
crucial info from the DOS system was to be made...
|
by: Wolfgang Kaml |
last post by:
I am not sure if this is more of an expert question, but I am sure that they
are out there.
I'd like to setup a general application or bin directory on my Win2003.Net
Server that will hold some...
|
by: google_groups3 |
last post by:
Hi all.
I currently have 2 text files which contain lists of file names. These
text files are updated by my code. What I want to do is be able to
merge these text files discarding the...
|
by: google_groups3 |
last post by:
Hi all.
I currently have 2 text files which contain lists of file names. These
text files are updated by my code. What I want to do is be able to
merge these text files discarding the...
|
by: Gregory Gadow |
last post by:
In a VB.Net 2.0 project, I have a WizardClass that contains a List (of
RuleClass). Each rule needs access to variables within it's parent
wizard, so the constructor for RuleClass is New (ByVal...
|
by: Stefan Schwarzer |
last post by:
Hi all!
For my FTP library module ftputil , some users have asked
for a way to avoid server timeouts (FTP status code 421). But I
haven't found out yet how I can do this in all cases.
I try...
|
by: Bob Nelson |
last post by:
It's been a long time since I've posed a query here on c.l.c. My work
environment evolved to primarily C++ and Perl with very little C, so I've
forgotten quite a lot over time.
This revisits the...
|
by: tomb |
last post by:
I wasn't sure which group was the correct one for this question.
I am in the design phase of an application, and I'm not sure about a
specific point about datasets and xml files.
Is it true,...
|
by: isladogs |
last post by:
The next Access Europe meeting will be on Wednesday 2 August 2023 starting at 18:00 UK time (6PM UTC+1) and finishing at about 19:15 (7.15PM)
The start time is equivalent to 19:00 (7PM) in Central...
|
by: erikbower65 |
last post by:
Using CodiumAI's pr-agent is simple and powerful. Follow these steps:
1. Install CodiumAI CLI: Ensure Node.js is installed, then run 'npm install -g codiumai' in the terminal.
2. Connect to...
|
by: linyimin |
last post by:
Spring Startup Analyzer generates an interactive Spring application startup report that lets you understand what contributes to the application startup time and helps to optimize it. Support for...
|
by: kcodez |
last post by:
As a H5 game development enthusiast, I recently wrote a very interesting little game - Toy Claw ((http://claw.kjeek.com/))。Here I will summarize and share the development experience here, and hope it...
|
by: DJRhino1175 |
last post by:
When I run this code I get an error, its Run-time error# 424 Object required...This is my first attempt at doing something like this. I test the entire code and it worked until I added this -
If...
|
by: Rina0 |
last post by:
I am looking for a Python code to find the longest common subsequence of two strings. I found this blog post that describes the length of longest common subsequence problem and provides a solution in...
|
by: DJRhino |
last post by:
Private Sub CboDrawingID_BeforeUpdate(Cancel As Integer)
If = 310029923 Or 310030138 Or 310030152 Or 310030346 Or 310030348 Or _
310030356 Or 310030359 Or 310030362 Or...
|
by: Mushico |
last post by:
How to calculate date of retirement from date of birth
|
by: DJRhino |
last post by:
Was curious if anyone else was having this same issue or not....
I was just Up/Down graded to windows 11 and now my access combo boxes are not acting right. With win 10 I could start typing...
| |