File: templates.cxx

package info (click to toggle)
pypy3 7.3.19%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 212,236 kB
  • sloc: python: 2,098,316; ansic: 540,565; sh: 21,462; asm: 14,419; cpp: 4,451; makefile: 4,209; objc: 761; xml: 530; exp: 499; javascript: 314; pascal: 244; lisp: 45; csh: 12; awk: 4
file content (56 lines) | stat: -rw-r--r-- 1,375 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#include "templates.h"


// template methods
long MyTemplatedMethodClass::get_size() { return -1; }

long MyTemplatedMethodClass::get_char_size()   { return (long)sizeof(char); }
long MyTemplatedMethodClass::get_int_size()    { return (long)sizeof(int); }
long MyTemplatedMethodClass::get_long_size()   { return (long)42; /* "lying" */ }
long MyTemplatedMethodClass::get_float_size()  { return (long)sizeof(float); }
long MyTemplatedMethodClass::get_double_size() { return (long)sizeof(double); }
long MyTemplatedMethodClass::get_self_size()   { return (long)sizeof(MyTemplatedMethodClass); }


// variadic templates
#ifdef WIN32
__declspec(dllexport)
#endif
std::string some_variadic::gTypeName = "";


// template with empty body
namespace T_WithEmptyBody {

#ifdef WIN32
__declspec(dllexport)
#endif
std::string side_effect = "not set";

template<typename T>
void some_empty() {
    side_effect = "side effect";
}

template void some_empty<int>();

} // namespace T_WithRValue


// The following is hidden from the Cling interpreter, but available to the
// linker; it allows for testing whether a function return is picked up from
// the compiled instantation or from the interpreter.

namespace FailedTypeDeducer {

template<class T>
class A {
public:
    T result() { return T{42}; }
};

template class A<int>;

template class B<int>;

} // namespace FailedTypeDeducer