Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara How to Use Template Specialization | Introduction
C++ Templates
Sezione 1. Capitolo 14
single

single

bookHow to Use Template Specialization

Scorri per mostrare il menu

Syntax of Template Specialization

To understand how template specialization works, we first need to grasp what happens under the hood when a template is called with a specific data type.

When you call a template function with a particular type, the compiler generates a concrete instance of the template for that type. This process is called template instantiation. Essentially, the compiler substitutes the template parameter with the provided type and creates a specialized version of the function.

main.cpp

main.cpp

copy
12345678910111213141516
#include <iostream> template<typename T> T TemplateFunction(T value) { return value; } // You can imagine the generated function to look something like this // template<> // int TemplateFunction<int>(int value) { return value; } int main() { // When the compiler encounters this line // It generates a function for the specified type // VVV TemplateFunction<int>(5); }

But first, it checks if a substitution for this function already exists. There's no point in generating multiple instances of this function if it's called with the same type repeatedly. With this knowledge, we can use it for our purposes.

main.cpp

main.cpp

copy
123456789101112131415161718192021
#include <iostream> // Primary template template<typename T> T TemplateFunction(T value) { std::cout << "Generic template\n"; return value; } // Template specialization for int template<> int TemplateFunction<int>(int value) { std::cout << "Specialized template for int\n"; return value * 2; // custom behavior } int main() { TemplateFunction<double>(3.14); // uses generic template TemplateFunction<int>(5); // uses specialized version }
Compito

Scorri per iniziare a programmare

Create a template specialization for the TemplateFunction that handles std::string data types.

  1. Implement a specialization for TemplateFunction to process std::string parameters differently.
  2. Ensure that any string passed as a parameter has "Specialized: " added to the beginning of the returned value.

Soluzione

Switch to desktopCambia al desktop per esercitarti nel mondo realeContinua da dove ti trovi utilizzando una delle opzioni seguenti
Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 14
single

single

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

some-alt