I am learning c++ by writing commons data structures and I have a compiler warning that my inlined add method is not defined.
src/vector.h:10:14: warning: inline function 'Vector::add' is not defined
      [-Wundefined-inline]
        inline void add(const float val);
What am I doing wrong? As far as I can tell the methods match up. However if I remove the inline method, it works fine but the first invocation of add takes 11380us but the 2nd and 3rd are around 3667us -nearly 4x penalty cost.
src/vector.h
//#include <cstddef>
class Vector {
public:
    explicit Vector(const int n);
    explicit Vector(const int n, const float val);
    float& operator[](const int i);
    inline int const length();
    inline void fill(const float val);
    inline void add(const float val);
    inline float sum();
private:
    float* arr;
    int len;
};
src.vector.cpp
#include "vector.h"
#include <iostream>
#include <algorithm>
#include "yepCore.h"
#include "yepMath.h"
#include "yepLibrary.h"
#include <cstdlib>
using namespace std;
inline void Vector::add(const float val)
{
    chrono::steady_clock::time_point start = chrono::steady_clock::now();   
    for (int i = 0; i < len; ++i) {
        arr[i] += val;
    }
    chrono::steady_clock::time_point end = chrono::steady_clock::now();
    cout << "yepp add took " << chrono::duration_cast<chrono::microseconds>(end - start).count()
              << "us.\n";
}
/**
template <>
void Vector<float>::add(const float val)
{
    chrono::steady_clock::time_point start = chrono::steady_clock::now();   
    yepCore_Add_V32fS32f_V32f(arr, val, arr, len);
    chrono::steady_clock::time_point end = chrono::steady_clock::now();
    cout << "yepp add took " << chrono::duration_cast<chrono::microseconds>(end - start).count()
              << "us.\n";
}
...
 
     
    