numeric_limits - błąd składniowy

0

Witam
Dlaczego w poniższym kodzie otrzymuję błędy?

#include <limits>
...

template <typename T> void KCI (std::vector <short int> KCT, std::string KCA){

	T t;
	t = std::numeric_limits<T>::max();

}

Błędy:

 Błąd	2	error C2589: "(" : niedozwolony token po prawej stronie "::"
Błąd	3	error C2059: Błąd składniowy: "::"

Warmingi:
Ostrzeżenie 1 warning C4003: za mało rzeczywistych parametrów dla makra "max"

Wszystkie błędy oraz warmingi odnoszą się do tej lini t = std::numeric_limits<T>::max();, po jej usunięciu kod działa poprawnie.

Korzystam z Microsoft Visual Studio 2012 Express.

0

Pokaż jak wywołujesz tę funkcję.

0

Błąd jest podczas kompilacji, a nie wywoływania, nawet po usunięciu wywołań nadal pojawia się błąd.

EDIT: Znalazłem rozwiązanie, wystarczyło dodać #undef max

0
#include <limits>
#include <vector>
#include <string>
#include <iostream>

template <typename T> void KCI (std::vector <short int> KCT, std::string KCA){

    T t;
    t = std::numeric_limits<T>::max();
    std::cout << t;
}

int main()
{
    KCI<int>(std::vector<short int>(), std::string());
}

działa u mnie ok

1

To było do przewidzenia, że jak dasz undef max to podziała. Jakie jeszcze biblioteki includujesz, bo pewnie w którejś z nich jest takie makro.

0
#include <winsock2.h>
#include <windows.h>
#include <d3d11.h>
#include <d3dx11.h>
#include <D3DX10.h>
#include <xnamath.h>
#include <FW1FontWrapper.h>
#include <string>
#include <sstream>
#include <iostream>
#include <fstream>
#include <process.h> 
#include <fstream>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <array>
#include <valarray>
#include <thread>
#include <random>
#include <mmsystem.h>
#include <dsound.h>
#include <limits>
1

http://stackoverflow.com/questions/11544073/how-do-i-deal-with-the-max-macro-in-windows-h-colliding-with-max-in-std
Jak widzisz min i max to makra z windows.h i zamiast robić undef, powinno się na początku pliku zdefiniować makro NOMINMAX.

0

Dziękuję za pomoc, zmieniłem #undef max na #define NOMINMAX.

1 użytkowników online, w tym zalogowanych: 0, gości: 1