---
name: "TAU_TYPE_STRING"
section: "3"
platform: "linux"
package: "tau"
version: "2.17.3.1.dfsg-4.2"
release: "Debian 9 (Stretch)"
platforms: ["linux"]
url: "https://new.carta.tech/TAU_TYPE_STRING"
---

# TAU\_TYPE\_STRING(3)

Creates a type string

## NAME

TAU\_TYPE\_STRING - Creates a type string

## SYNOPSIS

**C++:**

**TAU\_TYPE\_STRING(string &***variable***, string &***type\_string***);**

## DESCRIPTION

This macro assigns the string constructed in type\_string to the variable. The + operator and the CT macro can be used to construct the type string of an object. This is useful in identifying templates uniquely, as shown below.

## EXAMPLE

**C++ :**

```
template<class PLayout>
ostream& operator<<(ostream& out, const ParticleBase<PLayout>& P) {
  TAU_TYPE_STRING(taustr, "ostream (ostream, " + CT(P) + " )");
  TAU_PROFILE("operator<<()"taustr, TAU_PARTICLE | TAU_IO);
  ...
}
```

When PLayout is instantiated with " UniformCartesian\<3U, double\> ",this generates the unique template name:

```
operator<<() ostream const
ParticleBase<UniformCartesian<3U, double> > )
```

The following example illustrates the usage of the CT macro to extract the name of the class associated with the given object using CT(\*this);

```
template<class PLayout>
unsigned ParticleBase<PLayout7>::GetMessage(Message& msg, int node) {
  TAU_TYPE_STRING(taustr, CT(*this) + "unsigned (Message, int)");
  TAU_PROFILE("ParticleBase::GetMessage()", taustr, TAU_PARTICLE);
  ...
}
```

When PLayout is instantiated with " UniformCartesian\<3U, double\> ",this generates the unique template name:

```
ParticleBase::GetMessage() ParticleBase<UniformCartesian<3U,
double> > unsigned (Message, int)
```

## SEE ALSO

[CT(3)](/CT/3.md), TAU\_PROFILE, [TAU\_PROFILE\_TIMER(3)](/TAU_PROFILE_TIMER/3.md)
