"already defined in .obj error" or "function template has already been define" : I have this header file:

**Utility.h:**

    #pragma once
    
    #include <fstream>
    #include <iostream>
    #include <string>
    #include <vector>
    #include <Windows.h>
    
    using namespace std;
    
    template<std::size_t> struct int_ {};
    
    void writeToCSV(string fileName, string value);

    struct Timer {
    public:
    	Timer();
    	void start();
    	double getMilliSec();
    private:
    	LARGE_INTEGER frequency;        // ticks per second
    	LARGE_INTEGER t1, t2;           // ticks
    };

    //...
    
    #include "Utility.cpp"

And this implementation file:

**Utility.cpp:**

    #include "Utility.h"
    void writeToCSV(string fileName, string value) {
         //...
    }
    
    Timer::Timer() {
    	// get ticks per second
    	QueryPerformanceFrequency(&frequency);
    }
    
    void Timer::start() {
    	QueryPerformanceCounter(&t1);
    }
    
    double Timer::getMilliSec() {
    	QueryPerformanceCounter(&t2);
    	return (t2.QuadPart - t1.QuadPart) * 1000.0 / frequency.QuadPart;
    }

Which returns this error:

    error C2084: function 'void writeToCSV(std::string,std::string)' already has a body

The problem is not about guards (as suggested in [this][1] question) since I use `#pragma once`

I`ve read about of [implementing .tpp files][2] for template class implementation, but I find it an horrible solution, since Visual Studio will format nothing from this file.


  [1]: http://stackoverflow.com/questions/4988593/function-already-has-a-body
  [2]: http://stackoverflow.com/a/495056/4480180